使用PowerShell在多台服务器上运行病毒扫描

我试图在我们的环境中的服务器列表上运行病毒扫描。 有数百台机器,所以我们希望每次运行10次左右的扫描(使用我们已有的命令行提示符)。 我们对PowerShell完全陌生,所以任何帮助将非常感激。 我们对我们需要使用哪些命令有一个大致的了解 – 以下是我们现在认为它可能工作的方式:

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

有没有人对我们如何编排这个有任何build议?

我正在使用类似的东西在远程主机上并行运行任务:

 $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 | % { $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 | % { 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 }