Я создал скрипт Powershell, который выполняет foreach для массива строк и собирает только некоторую информацию о них. Это код:
begin {
$IMAGELIST = @(
"IMAGE Srv01 something something something Srv01_999888777 something"
"FRAG 1 something something"
"FRAG 2 something something"
)
}
process {
foreach ($LINE in $IMAGELIST) {
if ($LINE.StartsWith("IMAGE")) {
$IMAGELINE = $LINE.split()
$BKP_OBJ = [pscustomobject]@{
Server=$IMAGELINE[1]
Id=$IMAGELINE[5]
}
}
elseif ($LINE.StartsWith("FRAG")) {
$FRAGLINE = $LINE.split()
$BKP_OBJ | Add-Member -Force @{
CopyNumber = $FRAGLINE[1]
}
Write-Output -InputObject $BKP_OBJ
}
}
}
Когда я запускаю скрипт, у меня выводится два объекта с разными значениями CopyNumber (ожидаемый результат):
PS C:\Users\db> .\BkpScript.ps1
Server : Srv01
Id : Srv01_999888777
CopyNumber : 1
Server : Srv01
Id : Srv01_999888777
CopyNumber : 2
Если я пытаюсь сохранить вывод в переменную, у меня тот же CopyNumber (не ожидаемый результат):
PS C:\Users\db> $myvar = .\BkpScript.ps1
PS C:\Users\db> $myvar
Server : Srv01
Id : Srv01_999888777
CopyNumber : 2
Server : Srv01
Id : Srv01_999888777
CopyNumber : 2
Что я делаю не так?