Обратите внимание на следующий вывод. $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]"}
"
— процедура раскрытия строк в PowerShell не распознает сложные выражения.$Machinename | ForEach-Object {Write-Output $Names[0]}
будет работать нормально - person Mathias R. Jessen   schedule 28.01.2021"..."
, если вы хотите сослаться на выражение, которое выходит за рамки простой ссылки на переменную (например,$var
), ее необходимо заключить в$(...)
(например,$($var[0])
) - person mklement0   schedule 28.01.2021