如何加速使用 -CimSession 参数的 PowerShell cmdlet?

如何加速使用 -CimSession 参数的 PowerShell cmdlet?

正如标题所说,有人能加快这个小脚本的执行速度吗?无论如何,我是否以正确的方式使用 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 

相关内容