Поскольку ваш входной параметр ($env:servers
) является многострочной строкой, $servers
также будет отдельной многострочной строкой.
Чтобы использовать это с foreach
, это должен быть массив строк, вам нужно разделить $env:servers
, чтобы $servers
становился массивом строк с каждой строкой элемента. Это очень просто сделать, используя Split()
( блог на эту тему ):
$servers = ($env:servers).Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)
Это разделит на NewLine
и обработает все пустые строки, удалив пустые записи из окончательного вывода.
Пример кода, чтобы показать это поведение для будущей ссылки на других:
$input_servers = @"
server1
server2
server3
"@
$servers = $input_servers.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries)
foreach ($server in $servers) {
Write-Output "Server Name: $server"
}