操纵(添加文本)到CMDLET输出

时间:2014-11-10 14:05:00

标签: powershell-v3.0 pscustomobject

我已经把头撞到了墙上几天试图弄清楚这个...我试图获取以下命令的输出,将其导出为主机名为CSV的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-object,首先选择我想看的字段,然后对新数组做一个foreach

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

有效,但输出不像以前那样漂亮的表......看起来像这样

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

我想我正在寻找的是一个自定义对象,但我不知道如何做到这一点。哦,如果你想知道,这个命令将在多台计算机上运行,​​以构建一个"已安装的应用程序"的单个文件。要知道哪台计算机安装了哪些软件,请添加主机名。

由于

2 个答案:

答案 0 :(得分:2)

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

$reg1 | select @{n="Hostname";e={$hostname}},DisplayName,InstallDate

答案 1 :(得分:0)

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

Get-ItemProperty HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | where DisplayName | 
    select DisplayName, InstallDate | Export-Csv "$(hostname).csv" -NoTypeInformation