![](/img/trans.png)
[英]Export AD Info CSV based on User Name input CSV powershell script
[英]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...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.