gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:26:24 25 4
gpt4 key购买 nike

我正在尝试对我们环境中的服务器列表运行病毒扫描。有数百台机器,因此我们希望一次运行大约 10 台扫描(使用我们已有的命令行提示符)。我们对 PowerShell 完全陌生,因此我们将不胜感激。我们对需要使用的命令有一个大致的了解——这是我们认为它现在可能起作用的方式:

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

有没有人对我们如何协调这一点有任何建议?

最佳答案

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

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

关于powershell - 使用 PowerShell 在多台服务器上运行病毒扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18192550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com