我当前正在运行以下命令,但是我正在通过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
谢谢
答案 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