我正在尝试获得 2000 多台计算机的正常运行时间。由于未在这些计算机上配置 winrm,因此我无法使用 invoke-command -computername $computers。所以我试图用它start-job
来加快速度,但 start-job 没有带有throttleLimit
参数作为调用命令。所以我的脚本会触发大量的 powershell.exe 直到它杀死我的记忆......有没有办法限制并发作业?
这就是我现在所拥有的:
$jobs=@()
Get-QADComputer -SearchRoot $OU -SizeLimit 3000 |%{
$jobs+= Start-Job -ArgumentList $_.name -ScriptBlock {(param $cn)
if (Test-Connection -Quiet $cn){
$lastboottime=(Gwmi -computername $cn -Class Win32_OperatingSystem).lastbootuptime
$sysuptime = (Get-Date) – [System.Management.ManagementDateTimeconverter]::ToDateTime($lastboottime)
$cn +" "+$sysuptime.days
}
}
}
$jobs|%{ Wait-Job $_ -Timeout 30 |Receive-Job ;Remove-Job $_}