【问题标题】:manipulate (add text) to CMDLET output操作(添加文本)到 CMDLET 输出
【发布时间】:2014-11-10 14:04:59
【问题描述】:

几天来我一直在努力解决这个问题。我正在尝试获取以下命令的输出,将其导出为 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}

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

谢谢

【问题讨论】:

    标签: powershell-3.0 pscustomobject


    【解决方案1】:

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

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

    【讨论】:

    • 这正是我想要的!非常感谢。我正在尝试将此标记为答案,但出现错误...我稍后再试。
    • @bonneyt 没问题!很高兴为您提供帮助!
    【解决方案2】:

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

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

    【讨论】:

    • 卸载密钥中的数据将在每台计算机的一个文件中。最终的 CSV 文件将命名为 Applications20141110.csv
    猜你喜欢
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 2021-09-01
    • 2017-12-24
    • 2020-05-29
    相关资源
    最近更新 更多