我正在选择已安装应用程序的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
但是我找不到正确的语法。
答案 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