Получить часть строки из вывода Get-Item в Powershell - PullRequest
0 голосов
/ 26 октября 2018

Моя команда powershell ниже

$BUILD_SOURCEVERSIONMESSAGE= (Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE) 

возвращает вывод в этом формате

2018-10-26T01:08:44.7409834Z BUILD_SOURCEVERSIONMESSAGE     Merge 569594f057e2c4bd0320159855e81e14216ca66f into 41107d0f0db5ef2986831db2182280e0c...

Я пытаюсь проанализировать строку 569594f057e2c4bd0320159855e81e14216ca66f из вывода выше.

Я попытался преобразовать вывод в строку, разбить ее на пробелы и получить доступ ко второму элементу массива следующим образом.Тем не менее, я получаю пустую строку.Как я могу получить доступ к необходимой строке?

echo $BUILD_SOURCEVERSIONMESSAGE
$out = $BUILD_SOURCEVERSIONMESSAGE | Out-String
$out1 = $out.split()
echo $out1[1]

1 Ответ

0 голосов
/ 26 октября 2018

Кратким эквивалентом команды Get-Item Env:\BUILD_SOURCEVERSIONMESSAGE, т. Е. Извлечением значения переменной среды BUILD_SOURCEVERSIONMESSAGE, является выражение $env:BUILD_SOURCEVERSIONMESSAGE.

Использование унарной формы оператора -split Powershell, который разбиваетввод любого непустого пробела (при удалении начальных и конечных пробелов) вы можете получить желаемый результат следующим образом:

PS> (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]
569594f057e2c4bd0320159855e81e14216ca66f

Index 3 извлекает полученный токен 4th из токенизации через -split.


Если вы хотите использовать строковую интерполяцию с результатом:

$prefix = 'before<'; $postfix = '>after'
$val = (-split $env:BUILD_SOURCEVERSIONMESSAGE)[3]

# Output a synthesized string that applies a pre- and postfix, using
# {...} to enclose variable names to avoid ambiguity.
"${prefix}${val}${postfix}"

Выше приведены значения:

before<569594f057e2c4bd0320159855e81e14216ca66f>after
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...