获取程序安装的远程计算机列表

时间:2015-12-19 15:39:34

标签: powershell batch-file windows-7 windows-server-2008-r2

我正在尝试找到一种方法来获取大约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

用户确实有权写入指定位置。

知道为什么这不起作用?我也对其他建议持开放态度。

2 个答案:

答案 0 :(得分:2)

重复this question但要回答WMIC中的问题:

wmic /node:server用于远程计算机。

在Powershell中,Get-WMIObject具有-ComputerName参数,允许您对远程计算机运行命令。

尝试:Get-WMIObject -Class Win32_Product -ComputerName RemoteMachine101

答案 1 :(得分:0)

Win32_product通过端点和网络带宽产生一些不需要的结果。当调用MSI文件时,请使用体系结构执行完整性和兼容性检查。这可能导致速度降低和管道减少。一个很好的替代方案是卸载注册表 - 但是如果你不想解析字符串和路径,只需使用Gwmi win32_addremoveprograms-computer |选择*

我知道这不是RPC错误的答案,但在使用“产品”与替代品时绝对值得注意。祝你好运!