首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell脚本检查多台计算机上的应用程序版本。

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

Stack Overflow用户
提问于 2018-11-01 18:46:13
回答 2查看 995关注 0票数 0

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

另外,如果应用程序版本不同于我的基线,我也希望能够发出警报,但不确定从哪里开始。

代码语言:javascript
复制
$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

谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-11-01 21:22:25

Powershell v3。更高的版本。

尽可能使用CimInstance而不是WMI。

代码语言:javascript
复制
#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的计算机名)。

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

票数 0
EN

Stack Overflow用户

发布于 2018-11-04 01:05:42

是的,这也可以使用WMI,但是我建议您考虑将WMI调用迁移到CimInstance,而不是使用powershellv.3或更高版本,因为WMI是遗留的,并且不像CimInstance那样真正对防火墙友好。但下面是使用WMI的代码。

代码语言:javascript
复制
#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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53099688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档