繁体   English   中英

如何使用Powershell将计算机名称和应用程序信息导出到CSV

[英]How to export machine name, and application info to csv using powershell

我正在尝试创建一个简单的PS脚本以在SolarWinds上使用,该脚本将推出该脚本并在多台计算机上运行。 本质上,我需要它来导出计算机名称,并告诉我计算机上安装的特定软件版本。 考虑软件审核。 例如,我有5台计算机。 我想让此脚本在所有5台计算机上运行,​​并将数据附加到显示其计算机名称,应用程序名称以及名称中仅包含“ Office”的应用程序版本的csv文件中。

$Results =  
 Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
 Select-Object $env:computername, displayName, DisplayVersion |
 where-object {$_.DisplayName -match 'office'}
 $Results | Export-CSV -Append -Path \\filepath\office.csv -NoTypeInformation 

可以预期的是,如果它在5台或更多台计算机上运行,​​我最终将得到一个csv文件,该文件在excel中打开时会给我3列数据。 第一列是该计算机的计算机名称,第二列是应用程序名称,第三列是应用程序版本。 这些计算机都将追加到同一个csv文件中,因此最后我列出了具有该应用程序及其版本的所有计算机。

我可以在一台计算机上运行它,但是当我尝试在多台计算机上运行它时,它不会追加到同一csv文件中。

问题是计算机名称只是成为列名称,而不是用数据填充计算机名称列。

最好使用invoke-command来获取远程数据。

$export = @()
$computers = Get-Content Machines.txt

foreach($computer in $computers){
$Results = @()
$Results = Invoke-Command -ComputerName $computer -ScriptBlock { Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall* | Select-Object $computer, displayName, DisplayVersion | where-object {$_.DisplayName -match 'office' } }

$Results += $export
}

$export | Export-CSV -Append -Path \filepath\office.csv -NoTypeInformation

根据我的评论:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Select-Object @{l='ComputerName';e={$env:computername}},DisplayName,DisplayVersion |
    Where-Object {$_.DisplayName -match 'office'}

这里的收益(简称):

ComputerName DisplayName            DisplayVersion
------------ -----------            --------------
MY-PC        HP Officejet Pro 8500  28.0..
MY-PC        LibreOffice 6.2.5.2    6.2...
MY-PC        Office 16 Click-to-Run 16.0...
MY-PC        Office 16 Click-to-Run 16.0...

如果您想直接使用Excel,请Install-Module ImportExcel

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM