0

请注意以下输出。$Names 是一个包含两个值的数组。$Machinename 是一个包含两个值的数组。

它们在数组中的位置值是在 foreach 循环之外准确检索的。当在 foreach 循环中获取数组中第一个位置请求的值时,即 $Names[0] 忽略 [0] 的位置调用.....我需要能够自行检索该值.... . 最终我将需要对每个值进行交互以输入命令...

PS C:\Users\lab> $Names

john
jeff
PS C:\Users\lab> $Names[0]

john
PS C:\Users\lab> $Names[1]

jeff
PS C:\Users\lab> $Machinename

dev1
dev2
PS C:\Users\htlab> $Machinename | ForEach-Object  { Write-Output "$Names[0]"}

john jeff[0]
john jeff[0]

示例脚本:

$Names = 'john', 'jeff'
$machinename = 'dev1', 'dev2'
$Machinename | ForEach-Object  {Write-Output "$Names[0]"}
4

2 回答 2

4

您没有评估数组。通过写作"$Names[0]",它相当于$Names + "[0]".

您需要将评估嵌套在$(...).

尝试这个:

$Machinename | ForEach-Object  {Write-Output "$($Names[0])"}

这给了我:

john
john

同样,正如评论中所指出的,这也有效:

$Machinename | ForEach-Object  {Write-Output $Names[0]}
于 2021-01-28T00:32:34.280 回答
0

你可以尝试这样的事情,因为它似乎对我有用,除非那不是你要问的,

for (($i = 0); $i -lt $names.Count; $i++)
{
 $Names[$i] + ":" + $Machinename[$i]
}

输出:

John:dev1
Jeff:dev2
于 2021-01-28T00:48:59.183 回答