Как сказано в названии, как можно ускорить выполнение этого крошечного скрипта? Правильно ли я использую 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)
}
Изучите возможность использования фоновых заданий для командлета Get-ScheduledTask. Это запустит команду асинхронно.
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
Просто сделать:
$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