我正在尝试找到一种方法来获取大约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 :(得分: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错误的答案,但在使用“产品”与替代品时绝对值得注意。祝你好运!