我制作了一个 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
我究竟做错了什么?