从选择对象语句连接两个属性

时间:2018-12-07 19:27:25

标签: powershell

我正在选择已安装应用程序的DisplayName和DisplayVersion属性,如下所示:

$response = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Where-Object {$_.DisplayName -like '*My Application*'} | Select-Object DisplayName, DisplayVersion | ft -HideTableHeaders

结果是:My Application 1.2

出于其他解析的目的,我需要将结果与管道字符连接起来,以便其返回为:My Application|1.2

但是我找不到正确的语法。

2 个答案:

答案 0 :(得分:4)

使用计算所得的属性来组合两个单独的属性:

$response = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  
  Where-Object {$_.DisplayName -like '*My Application*'} | 
    Select-Object  @{n='DisplayNameVersion';e={$_.DisplayName,$_.DisplayVersion -join '|'}}).DisplayNameVersion

答案 1 :(得分:1)

尝试这样的事情

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Where-Object {$_.DisplayName -like '*office*'} | Select-Object @{Expression={$_.DisplayName + "|" + $_.DisplayVersion}} | ft -HideTableHeaders

使用-join:

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  Where-Object {$_.DisplayName -like '*office*'} | Select-Object @{Expression={$_.DisplayName, $_.DisplayVersion -join "|"}} | ft -HideTableHeaders

使用ConvertTo-CSV进行问卷调查

您可以使用ConvertTo-CSV,但是如果不需要头,则需要使用-skip 1,这可能并不总是可以理解的。此外,您可能必须从输出中remove quotes,这是一项额外的工作。

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*| Where-Object {$_.DisplayName -like '*office*'} | Select-Object DisplayName, DisplayVersion | ConvertTo-Csv  -Delimiter '|' -NoTypeInformation | select -skip 1
相关问题