2000 台以上のコンピューターの稼働時間を取得しようとしています。これらのコンピューターでは winrm が構成されていないため、invoke-command -computername $computers を使用できません。だから私は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 $_}