Проблема в том, что $Year -Split 'Year='
возвращает 2 элементов, а не только строку после Year=
.
Немедленное исправление будет:
$Year = ($Year -Split 'Year=')[1].Trim()
В общем, вы можете написать:
$Year = ($Year -split '=', 2)[1].Trim()
Что касается того, что вы пытались :
Если оператор -split
находитстрока-разделитель в самом начале строки также предполагает, что то, что предшествует , это первая возвращаемая подстрока, которая является пустой строкой в этомcase.
В вашем случае 'Year= YYYY' -split 'Year='
эффективно возвращает массив '', ' YYYY'
, а вызов .Trim()
для него обрезает отдельные элементы, поэтому вы получите '', 'YYYY'
.
Есливы выводите это на консоль через неявный вывод PowerShell , вы можете получить пустую строку , за которой следует YYYY
, что также будет, если вы используете Write-Output $Year
.
В отличие от этого, если вы используете Write-Host
, PowerShell структурирует массив, объединяя его элементы с пробелами (по умолчанию, можно изменить с помощью $OFS
), поэтому вы получите YYYY
.
Другими словами:
PS> Write-Host ('', 'YYYY')
YYYY # concatenation of: empty string, space, 'YYYY'
по умолчанию неявно совпадает с:
PS> Write-Host (('', 'YYYY') -join ' ')
YYYY