2015-12-19 92 views
0

我想找到一種方法來獲取約150臺計算機上安裝的每個程序的GUID。我想我可以創建一個登錄腳本來運行腳本並將結果保存到服務器上的共享文件夾中。該腳本將運行,但該文件爲空。如果我手動運行腳本,它就可以工作。以下是我創建的腳本。一個是批處理文件,另一個是powershell。獲取程序安裝遠程計算機列表

批處理文件

wmic product get > \\svr\Public\Diagnostics\%computername%-installed-programs.txt 

Powershell的

$properties = "identifyingnumber","name","vendor","version" 
$ComputerName = $env:computername 
Get-WmiObject -Class win32_Product -Property $properties |    
Select -Property $properties |    
Export-Csv -Path \\svr\Public\Diagnostics\$ComputerName-Installed-Programs.csv -Encoding Unicode -NoTypeInformation 

的用戶確實有權寫入到指定的位置。

任何想法,爲什麼這不工作?我也接受其他建議。

+0

不知道!我換了一個本地路徑,它在我的電腦上工作。 – FoxDeploy

回答

2

this question重複,但回答問題的WMIC使用:

wmic /node:server遠程機器。

在Powershell中,Get-WMIObject-ComputerName參數允許您針對遠程計算機運行命令。

嘗試:Get-WMIObject -Class Win32_Product -ComputerName RemoteMachine101

+0

我曾嘗試過,但我收到一個錯誤,說RPC服務器不可用。以這種方式運行腳本時遇到了一些問題。我最大的問題是我必須輸入每個想要清點的計算機的名稱。如果我創建了登錄或啓動腳本並將其存儲在線,我可以將其分配給特定的OU,並讓該組中的每個用戶或計算機運行該腳本並保存結果。 – thebradnet

+0

RPC服務器不可用是處理遠程計算機時非常常見的錯誤。確保Powershell控制檯以'Administrator'身份運行,並且您的帳戶在目標計算機上具有管理權限。 – user4317867

0

我想通了這個問題,這就是我所做的。

首先,我在計算機配置中添加了一個可以接受WMI-In的GPO。修復了「RPC服務器不可用」響應。

其次,我使用所有可用節點的憤怒IP進行IP掃描。然後我將列表導出到CSV文件,然後對其進行修改,以便只顯示IP地址。然後我將它保存爲一個文本文件。

接下來,我創建了一個PowerShell腳本。該腳本從我之前生成的txt文件中提取IP地址。該腳本將運行每個IP地址並將每個IP的結果保存在一個sperate文件中。下面是腳本:

$IPAddress = Get-Content Z:\Installed-Software\ip-addresses.txt 
foreach($ComputerName in $IPAddress) { 
echo $ComputerName 
Get-WmiObject -Class Win32_Product -ComputerName $ComputerName | Select-Object Name, IdentifyingNumber | Export-Csv C:\Installed-Software\$ComputerName-installed-programs.csv } 

您可以運行在整個子網掃描,但我選擇了掃描或可用的節點,只有在這些節點上運行該腳本。由於需要一分鐘或2分鐘才能生成結果,我想通過消除所有脫機節點來節省一些時間。

希望這可以幫助別人。特別感謝user4317867推送。

0

Win32_product通過端點和網絡帶寬產生一些不想要的結果。被調用的MSI文件執行與體系結構的完整性和兼容性檢查。這可能會導致速度變慢,管道減少。一個很好的選擇是卸載註冊表 - 但是如果你不想分析字符串和路徑,只需使用Gwmi win32_addremoveprograms -computer |選擇*

我知道這不是RPC錯誤的答案,但絕對值得注意的是,在使用「產品」與其他選擇時。祝你好運!

相關問題