正如标题所说,有人能加快这个小脚本的执行速度吗?无论如何,我是否以正确的方式使用 New-CimSession?
$computers = Get-ADComputer -SearchBase "OU=W2012,OU=Servers,DC=contoso,DC=com" -Filter *
foreach ($computer in $computers)
{
Get-ScheduledTask -TaskName "SomeTask" -CimSession (New-CimSession -ComputerName $computer.Name)
}
答案1
研究使用 Get-ScheduledTask cmdlet 的后台作业。这将异步运行该命令。
foreach ($computer in $computers) {
start-job -scriptblock {
#Parse Args
$CompName = $args[0]
$TaskName = $args[1]
Get-ScheduledTask -TaskName $TaskName -CimSession (New-CimSession -ComputerName $CompName)
} -name( "SchedTask_$($computer)" ) -ArgumentList $computer, "Task Name"
}
之后您需要等到您的作业处于“完成”状态,然后使用 Receive-Job 获取输出。极客学校:学习如何在 PowerShell 中使用作业
答案2
做就是了:
$computers = Get-ADComputer -SearchBase "OU=W2012,OU=Servers,DC=contoso,DC=com" -Filter *
$sessions = New-CimSession -ComputerName $computers.Name
Get-ScheduledTask -TaskName "SomeTask" -CimSession $sessions