Use o PowerShell para executar a verificação de vírus em vários servidores

Estou tentando executar uma verificação de vírus em uma lista de servidores em nosso ambiente. Existem centenas de máquinas, portanto, gostaríamos de executar a varredura (usando um prompt de linha de comando que já temos) por volta de 10 por vez. Somos totalmente novos no PowerShell, então qualquer ajuda seria muito apreciada. Temos uma ideia geral de quais comandos precisamos usar – veja como achamos que isso pode funcionar agora:

$server = Get-Content "serverlist.txt" $server | % { $VirusScan = { Scan32.exe } Invoke-Command -ScriptBlock { $VirusScan } -computerName $server -ThrottleLimit 10 -Authentication domain/admin } 

Alguém tem alguma sugestão sobre como podemos orquestrar isso?

Estou usando algo assim para executar tarefas em paralelo em hosts remotos:

 $maxSlots = 10 $hosts = "foo", "bar", "baz", ... $job = { Invoke-Command -ScriptBlock { Scan32.exe } -Computer $ARGV[0] -ThrottleLimit 10 -Authentication domain/admin } $queue = [System.Collections.Queue]::Synchronized((New-Object System.Collections.Queue)) $hosts | ForEach-Object { $queue.Enqueue($_) } while ( $queue.Count -gt 0 -or @(Get-Job -State Running).Count -gt 0 ) { $freeSlots = $maxSlots - @(Get-Job -State Running).Count for ( $i = $freeSlots; $i -gt 0 -and $queue.Count -gt 0; $i-- ) { Start-Job -ScriptBlock $job -ArgumentList $queue.Dequeue() | Out-Null } Get-Job -State Completed | ForEach-Object { Receive-Job -Id $_.Id Remove-Job -Id $_.Id } Sleep -Milliseconds 100 } # Remove all remaining jobs. Get-Job | ForEach-Object { Receive-Job -Id $_.Id Remove-Job -Id $_.Id }