[英]Check if specific programs are installed on a remote server using powershell
我正在编写一个脚本,在其中需要检查特定应用程序(如果已安装或未安装在远程服务器上)。 我对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”,“ app1”,等等。 该脚本似乎无效。
请让我知道发生了什么问题以及需要执行哪些操作才能获取已安装的特定软件的列表。 另外,请注意,我将在Windows 2008和2012服务器上都使用此脚本。
删除脚本的-Filter {Name like "%Microsoft%"}
部分,使其返回所有已安装的软件。
假设您要在此代码上方的某个位置创建$computers
变量和计算机名列表,则可能要执行ForEach ($computer in $computers)
。
您还需要-Append
to 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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.