У меня есть сценарий PowerShell, использующий Invoke-Command
, который использовался около года, и внезапно возникли очень плохие проблемы с производительностью. То, что обычно требовалось от 1 до 2 секунд, теперь занимает около 90 секунд. Смущает, что это не всегда занимает много времени. Фактически, я тестировал его много раз в течение сегодняшнего дня и видел, что он отлично работает с каждой попыткой в течение 10-20-минутного периода, а затем он снова становится ужасно медленным в течение следующих 20-40-минутного периода тестирования.
Простой взгляд на мой тестовый код:
$cred = New-Object System.Management.Automation.PSCredential $username, $securePassword
Write-Host "Running command..."
Invoke-Command -ComputerName $target -Credential $cred -ScriptBlock {
Write-Host "Hello"
}
Write-Host "Done"
Время получения результатов выглядит примерно так:
"Running command..."
65 секунд ...
"Hello"
25 секунд ...
"Done"
Для использования этого мне нужно подождать процесса и затем увидеть результат команды, чтобы я не мог просто киньте -AsJob
в скрипт и не ждите вывода. Что я должен искать, чтобы найти, что замедляет это? Я проверил целевую машину во время медленного ответа и не вижу необычного использования процессора или памяти.