-1

几天来,我一直在努力解决这个问题。我正在尝试获取以下命令的输出,将其导出为 CSV,并在每行的开头使用主机名

$reg1 = Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Where {$_.DisplayName -ne $null }
$reg1 | select DisplayName,InstallDate

最终的 CSV 输出看起来像这样,但是对于卸载键中的每个项目

Office_Computer,PuTTY version 0.63,20140319

我尝试通过首先选择我想查看的字段来做一个 foreach 对象,然后在新数组上做一个 foreach

$test = $reg1 | select DisplayName,Installdate
$test | foreach-object {"$hostname,$_"}

这行得通,但输出不像以前那样在一个漂亮的表中......它看起来像这样

PDMZ-SUPT1,@{DisplayName=PuTTY version 0.63; InstallDate=20140319}

我想我正在寻找的是一个自定义对象,但我不知道如何使它工作。哦,如果您想知道,此命令将在多台计算机上运行以构建“已安装应用程序”的单个文件。要知道哪台计算机安装了哪些软件,需要添加主机名。

谢谢

4

2 回答 2

2

试试这个(如果我理解你的目标):

$reg1 | select @{n="Hostname";e={$hostname}},DisplayName,InstallDate
于 2014-11-10T14:50:47.023 回答
0

以主机命名文件还不够吗?或者您是否必须将所有主机的所有项目都包含在一个 CSV 文件中?

Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | where DisplayName | 
    select DisplayName, InstallDate | Export-Csv "$(hostname).csv" -NoTypeInformation
于 2014-11-10T15:07:36.797 回答