Я бы рекомендовал следующий подход:
$serversall = (Get-Content ".\Servers.txt")
$output = @()
foreach($vm in $serversall) {
$installed = (Get-WindowsFeature Web-Server -ComputerName $vm).InstallState
$output += New-Object PSCustomObject -Property @{'ComputerName'=$vm; 'Status'=$installed }
}
$output | Export-Csv -path E:\Scripts\Output\IISWebServersStatus.csv -Append
Создать массив $output
, который можно использовать для хранения всей информации.На каждой итерации цикла создайте объект, содержащий имя сервера и состояние установки, и добавьте его в выходной массив.
После завершения цикла запишите выходной массив в файл csv.
Выполнение одной записи файла в конце сэкономит на операциях ввода-вывода, поэтому может сэкономить время.В этом примере Get-WindowsFeature
является относительно медленной операцией, поэтому, вероятно, она не имеет большого значения, но, тем не менее, хорошо понимает теорию.