【发布时间】:2019-09-05 13:32:41
【问题描述】:
我正在尝试创建一个简单的 PS 脚本以在 SolarWinds 上使用,它将将该脚本推出并在一堆计算机上运行。基本上我需要它来导出机器名称,并告诉我安装在计算机上的特定软件版本。想想软件审计。例如,我有 5 台计算机。我想让这个脚本在所有 5 台机器上运行,并将数据附加到一个 csv 文件中,显示它们的机器名称、应用程序名称和应用程序版本,仅适用于名称中包含“Office”的应用程序。
$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 文件。
问题是机器名只是简单地变成了列名,而不是用数据填充机器名列。
【问题讨论】:
-
修改您的
Select-Object以插入计算属性 =>Select-Object @{Label='ComputerName';Expression={$env:computername}},DisplayName, DisplayVersion -
那是确切的脚本吗?因为 $env:computername 不是您正在收集的对象的成员。
-
@LotPings 对我有用。谢谢
标签: powershell csv