Powershell脚本检查多台计算机上的应用程序版本。

时间:2018-11-01 10:46:13

标签: windows powershell

我当前正在运行以下命令,但是我正在通过foreachloop运行它们。我目前可以将它们都输出到csv中,作为每台计算机的列表,但是理想情况下,id希望将它们输出到循环中所有计算机的csv中,在顶部,然后在计算机名版本下方列出应用程序等等,这样我可以追加csv并只有一个大csv,可以在excel中打开时对其进行排序和过滤。

附加ID也希望能够提醒应用版本是否与我的基准不同,尽管不确定从何开始。

$InstalledApps = gwmi Win32Reg_AddRemovePrograms64 | Select DisplayName, Publisher, Version

$InstalledApps += 
C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -Command {gwmi Win32Reg_AddRemovePrograms | Select DisplayName, Publisher, Version}

$InstalledApps = $InstalledApps | sort displayname | Get-Unique -AsString

$InstalledApps| Select DisplayName, Publisher, Version | ogv -PassThru | export-csv .\apps.csv

谢谢

2 个答案:

答案 0 :(得分:0)

Powershell v3。及以上。

在可能的情况下尝试使用CimInstance代替WMI。

#Define a Table Array
$MasterTable = @()

#Define computer list
$Computerlist = "computer1", "computer22"

#Run Foreach to retrieve data from each computer remotely
Foreach ($computer in $Computerlist) {
$MasterTable += Get-CimInstance win32_product -Computername $Computer |   
    Select-Object @{Name = "Computername"; Expression = {$Computer}}, 
    @{Name = "SoftwareName"; Expression = {$_.Caption}}, 
    @{Name = "Publisher"; Expression = {$_.Vendor}},
    @{Name = "Version"; Expression = {$_.Version}} 
}

$MasterTable | export-csv .\apps.csv -NoTypeInformation -Append

这应该为您提供一个CSV导出,其中包含四列,其中包含您需要的所有信息(包括运行了计算机名Get-CimInstance的信息)。

如果愿意,可以在导出到CSV之前对MasterTable变量做一些附加的逻辑

答案 1 :(得分:0)

是的,使用WMI也可以做到这一点,但是我建议您考虑将WMI调用迁移到CimInstance,而不是使用Powershell v.3及更高版本,因为WMI是旧的,并且实际上对防火墙不友好,例如CimInstance。 但是这里是使用WMI的代码。

#Define a Table Array
$MasterTable = @()

#Define computer list
$Computerlist = "computer1", "computer2"

#Run Foreach to retrieve data from each computer remotely
Foreach ($computer in $Computerlist) {
$MasterTable += Get-WmiObject -Class Win32_Product -Computername $Computer |   
    Select-Object @{Name = "Computername"; Expression = {$Computer}}, 
    @{Name = "SoftwareName"; Expression = {$_.Caption}}, 
    @{Name = "Publisher"; Expression = {$_.Vendor}},
    @{Name = "Version"; Expression = {$_.Version}} 
}

$MasterTable | export-csv c:\temp\apps.csv -NoTypeInformation -Append