从问题中获取数组的值

时间:2019-05-08 07:16:08

标签: powershell

当尝试为每个元素获取一行时,将检索完整变量而不是项目。

我尝试了foreach和for相同的结果

$test = (Get-Content "xxxx.sdgm") -match "Install,"
    $package =  ($test).replace("Install,", "")
    $first = ($package).substring(0,4)
    $second = ($test).replace("Install,", "").substring(4, 16)
    for ($i = 0; $i -lt $first.Count; $i++)
    { 
        "$second[$i]"
    }

预期结果:

PS C:\Windows\system32> $second[1]
RAMP0001600WEN00

PS C:\Windows\system32> $second[2]
WEST0005000WEN00

PS C:\Windows\system32> $second[3]
VC101003031WEN00

实际结果:

PS C:\Windows\system32> C:\Temp\chuches\testing.ps1
ODFX0001000WEN00 RAMP0001600WEN00 WEST0005000WEN00 VC101003031WEN00 CLNT0010203NEN00 NLS10010202WEN00 ODCR0010050WEN00 STAR0036000WEN00[0]
ODFX0001000WEN00 RAMP0001600WEN00 WEST0005000WEN00 VC101003031WEN00 CLNT0010203NEN00 NLS10010202WEN00 ODCR0010050WEN00 STAR0036000WEN00[1]
ODFX0001000WEN00 RAMP0001600WEN00 WEST0005000WEN00 VC101003031WEN00 CLNT0010203NEN00 NLS10010202WEN00 ODCR0010050WEN00 STAR0036000WEN00[2]
.
.
.
[7]

(我的主要目标是将$ first和$ second连接起来,但我一直坚持使其工作,因此$ first一直存在,直到我可以使它工作为止,预期结果将是“ test-path $ first \ $秒”)

谢谢。

1 个答案:

答案 0 :(得分:0)

假设第一行的输出沿这些行:

$test = @("Install,ODFX0001000WEN00", "Install,RAMP0001600WEN00", "Install,VC101003031WEN00", "Install,WEST0005000WEN00", "Install,CLNT0010203NEN00", "Install,NLS10010202WEN00", "Install,ODCR0010050WEN00", "Install,STAR0036000WEN00")

我们可以执行以下操作。我将第二个子字符串中的'16'更改为字符串的长度

$test = @("Install,ODFX0001000WEN00", "Install,RAMP0001600WEN00", "Install,VC101003031WEN00", "Install,WEST0005000WEN00", "Install,CLNT0010203NEN00", "Install,NLS10010202WEN00", "Install,ODCR0010050WEN00", "Install,STAR0036000WEN00")

$package =  ($test).replace("Install,", "")
$first = ($package).substring(0,4)
$second = ($test).replace("Install,", "").substring(4, $test.Length)
for ($i = 0; $i -lt $first.Count; $i++)
{
    Test-Path "C:\$($first[$i])\$($second[$i])"
}

要解释字符串输出所遇到的问题,而不是从数组中输出单个对象,而是每次都输出完整的数组。这是因为引号。

如果删除$second[$i]周围的引号,则会得到预期的结果。

$test = @("Install,ODFX0001000WEN00", "Install,RAMP0001600WEN00", "Install,VC101003031WEN00", "Install,WEST0005000WEN00", "Install,CLNT0010203NEN00", "Install,NLS10010202WEN00", "Install,ODCR0010050WEN00", "Install,STAR0036000WEN00")

$package =  ($test).replace("Install,", "")
$first = ($package).substring(0,4)
$second = ($test).replace("Install,", "").substring(4, $test.Length)
for ($i = 0; $i -lt $first.Count; $i++)
{
    $second[$i]
}