PowerShell命令用于查找AD组上所有PC上的软件



我们已经换成了新的病毒保护,我正在努力追踪所有安装了旧McAfee软件的机器。我们在一个域组中,所有的电脑都列在active directory中。

$list = Get-ADComputer -Filter *
foreach($PC in $list){
$data = Get-WmiObject -ComputerName $PC -Class Win32_Product | sort-object Name | 
Select-Object Name | Where-Object { $_.Name -like "*McAfee*"}
if($data){
Write-Output "$PC has $($data.name) installed" |
out-file C:UsersusernameDesktop -Append
}
}

说到powershell,我有点业余。

我一次又一次地收到这个错误

Get-WmiObject : The RPC server is unavailable.
At line:4 char:13
+     $data = Get-WmiObject -ComputerName $PC -Class Win32_Product | so ...
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand

我读到它可能是组策略中的防火墙设置。在我尝试改变之前,这是最有效的方法吗?为了简单起见,我避免使用计算机名称列表,但如果有必要,我可以这样做。

你是对的,有一个防火墙设置阻止Powershell远程访问。在很多地方,它似乎是一种非常常见的安全设置,因为关闭它比调整它只允许特定的人使用更容易。

如果您无法访问SCCM或AdminOfThings评论的任何其他库存/配置管理软件,那么这是获取您所需信息的合理方式。我使用了类似的方法来跟踪我们一些计算机上的RAM和CPU使用情况,但我不得不用codaamok发布的链接中的代码修改每台计算机。这是一个选择加入程序,所以这种方法对我有效

这可能取决于您的组策略管理员希望如何处理,他们是否希望允许这种远程访问。

最新更新