Почему задача «Powershell на удаленной машине» приостанавливается на 30 секунд перед выполнением встроенного сценария? - PullRequest
2 голосов
/ 10 октября 2019

При выполнении задачи «Powershell на удаленной машине» на локальном сервере Azure Devops мы постоянно видим 30-секундную паузу в выполнении.

Это позволяет даже очень простым удаленным вызовам удаленных сценариев выполнять не менее 30 секунд.

Изменение задачи на обычную задачу PowerShell, настройка PSSession вручную и выполнение точно такой же Invoke-Command выполняется намного быстрее.

Итак, вопрос в том, является ли это ошибкой на сервере Devure Azureили есть какая-то дополнительная конфигурация, которую нам нужно сделать для Powershell на задачах удаленного компьютера, чтобы он работал лучше? Мы ничего не пытались настроить - просто использовали настройки задач по умолчанию.

Версия сервера Azure Devops - обновление 2019 г. 1. Агенты обновлены до последней версии.

Вывод из «Powershell» на удаленной машине«Задание Azure Devops:

2019-10-10T04:51:03.4296728Z ##[section]Starting: <hidden> - Stop site
2019-10-10T04:51:03.4727773Z ==============================================================================
2019-10-10T04:51:03.4728808Z Task         : PowerShell on target machines
2019-10-10T04:51:03.4728850Z Description  : Execute PowerShell scripts on remote machines using PSSession and Invoke-Command for remoting
2019-10-10T04:51:03.4728886Z Version      : 3.1.2
2019-10-10T04:51:03.4728935Z Author       : Microsoft Corporation
2019-10-10T04:51:03.4728970Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/powershell-on-target-machines
2019-10-10T04:51:03.4729006Z ==============================================================================
2019-10-10T04:51:08.6710628Z PSSession created for Machines:'<hidden>'
2019-10-10T04:51:08.9207041Z ================================================ <hidden> ================================================
2019-10-10T04:51:38.9317626Z ================================================ <hidden> ================================================
2019-10-10T04:51:38.9325165Z ##[command]& 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command ". 'C:\Users\<hidden>\AppData\Local\Temp\f228e8e1-f90a-4263-89cd-55320f5ad80b.ps1'"
2019-10-10T04:51:38.9630832Z 
2019-10-10T04:51:39.0526046Z Script execution succeeded for ComputerName: '<hidden>'
2019-10-10T04:51:39.3236823Z ##[section]Finishing: <hidden> - Stop site

OBS 30-секундная пауза с 2019-10-10T04: 51: 08.9207041Z до 2019-10-10T04: 51: 38.9317626Z. Мы видим такую ​​паузу во всех наших Powershell для задач машины.

Переход к обычной задаче Powershell и настройка PSSession вручную сделает скрипт намного быстрее. Мы реализуем это так:

$password = ConvertTo-SecureString "$(PASSWORD)" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ("$(USER)", $password)
$session = New-PSSession -ComputerName $(SERVER) -Credential $cred -UseSSL

Invoke-Command -Session $session -ScriptBlock { `
  Copy-Item "C:\Users\<HIDDEN>\Documents\app_offline.htm" `
  "$(DEPLOY_PATH)\app_offline.htm" `
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...