Объединение двух свойств из оператора Select-Object - PullRequest
0 голосов
/ 07 декабря 2018

Я выбираю свойства 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 голосов
/ 07 декабря 2018

Используйте вычисляемое свойство, чтобы объединить два отдельных свойства:

$response = (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |  
  Where-Object {$_.DisplayName -like '*My Application*'} | 
    Select-Object  @{n='DisplayNameVersion';e={$_.DisplayName,$_.DisplayVersion -join '|'}}).DisplayNameVersion
0 голосов
/ 07 декабря 2018

попробуйте что-то вроде этого

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, что не всегда может быть понятно.Кроме того, вам может понадобиться удалить кавычки из вывода, что является дополнительным усилием.

Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*| Where-Object {$_.DisplayName -like '*office*'} | Select-Object DisplayName, DisplayVersion | ConvertTo-Csv  -Delimiter '|' -NoTypeInformation | select -skip 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...