【发布时间】:2022-01-20 14:45:34
【问题描述】:
我正在尝试编写一个简单的 powershell 脚本来从机器上提取软件和服务数据。所以我试图找出将数据合并到一个 cvs 文件而不是两个单独的 csv 文件的最佳方法。我想使用下面的,但最终合并两组数据会节省时间。
Get-Services | Select StartType, Status, Name, DisplayName |
Export-CSV -path $servicescsv
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
Export-CSV -path $softwarecsv
所以上面可能很简单,但我可以为软件和服务创建两个数组。但是,在不相互覆盖的情况下组合两个数组的最佳方法是什么?我知道其中一个问题是软件的 DisplayName 与服务的 DisplayName 冲突。所以现在$array3 = $services + $software 只是将软件显示名称添加到数组中,而其他列都丢失了。
解决这个问题的最佳方法是什么?
【问题讨论】:
-
您希望如何构建生成的 CSV?请注意,您的两个数据集之间没有联系... [皱眉]
-
可能是包含软件数据集的新列。老实说,我不太确定该往哪个方向发展。
-
如果我是你,我会坚持使用两个 csv 文件,因为数据完全不相关。为什么合并它们对您很重要?
-
只是为了尽量减少文件的数量,但所有数据都只是被添加到数据透视表中表示的数据集中。数据透视表将显示网络中所有计算机的软件和服务报告。
-
您可以使用这个
Join-Object script/Join-Object Module(另请参阅:In Powershell, what's the best way to join two tables into one?),它也可以进行并行连接:Import-Csv $servicescsv | FullJoin (Import-Csv $softwarecsv) -Name Service,Software
标签: powershell audit sysadmin