У меня есть сценарий PowerShell, который я хочу запустить на более чем 5000 конечных точках. Сценарий перечисляет кучу информации о каждом хосте, которую я затем хочу передать в другую программу для анализа.
Проблема, с которой я сталкиваюсь, заключается в том, что Invoke-Command не позволяет мне обрабатывать данные, возвращаемые с каждой машины, по мере их получения. Это проблема, потому что с более чем 5000 конечных точек я сталкиваюсь с ограничениями памяти на машине, с которой я запускаю Invoke-Command.
В идеале я хотел бы иметь возможность выполнять блок сценария каждый раз, когда я получаю ответ от машины. Что-то похожее на это, например:
$ProcessOutput = {
# $_ = Data returned from one machine
$_ | Out-File ($_.PSComputerName)
}
Invoke-Command -FilePath $ScriptPath -ComputerName $Computers -ProcessingScriptBlock $ProcessOutput
Это уже возможно, и я что-то упускаю из виду? Или лучше всего просто разделить список компьютеров на части и сканировать каждую часть по одному (что приводит к увеличению времени выполнения)?