使用PowerShell检查远程服务器上是否安装了特定程序

时间:2017-06-28 11:13:09

标签: windows powershell scripting

我正在编写一个脚本,我需要在远程服务器上检查特定应用程序是否已安装。我是PowerShell的新手,但这是我写的脚本

ForEach ($computers in $computer){
    Get-WMIObject -Class win32_product -Filter {Name like "%Microsoft%"} -ComputerName $computers -ErrorAction STOP | Select-Object -Property Name,Version | export-csv "C:\progrms.csv"
}

我在这里面临的问题是,我可以获得仅安装了Microsoft应用程序的详细信息,如果我为过滤器参数提供多个名称,例如" Microsoft"," SQL",& #34; APP1"等等。这个脚本似乎不起作用。

请告诉我出了什么问题以及需要做些什么才能获得已安装的特定软件的列表。另请注意,我将在Windows 2008和2012服务器上使用此脚本。

1 个答案:

答案 0 :(得分:0)

删除脚本的-Filter {Name like "%Microsoft%"}部分,让它返回所有已安装的软件。

您可能希望执行ForEach ($computer in $computers)而不是相反,假设您使用计算机名称列表在此代码上方创建$computers变量。

您还需要-Append到Export-CSV命令,否则每台计算机的输出都会覆盖之前的输出,但是您将要知道的另一个问题是知道哪台软件来自哪台计算机。您可以使用计算属性将计算机名称添加到输出中来解决此问题,如下所示:

ForEach ($Computer in $Computers){
    Get-WMIObject -Class win32_product -ComputerName $Computer -ErrorAction Stop |
        Select-Object -Property @{N='Computer';E={$Computer}},Name,Version |
        Export-Csv "C:\progrms.csv" -Append
}