Tfs “为什么?”;“远程机器上的Powershell”;在执行内联脚本之前,任务暂停30秒?

Tfs “为什么?”;“远程机器上的Powershell”;在执行内联脚本之前,任务暂停30秒?,tfs,azure-devops,azure-devops-server-2019,Tfs,Azure Devops,Azure Devops Server 2019,在Azure Devops(内部部署)服务器中运行“远程机器上的Powershell”任务时,我们始终会看到执行暂停30秒 这使得即使是非常简单的远程脚本调用也至少需要30秒才能完成 将任务更改为普通powershell任务,手动设置PSSession并发出完全相同的Invoke命令,运行速度要快得多 所以问题是,这是Azure Devops服务器中的一个bug,还是我们需要为远程机器任务上的Powershell执行一些额外的配置,以使其性能更好? 我们没有尝试调整任何东西,只是使用了默认的任务

在Azure Devops(内部部署)服务器中运行“远程机器上的Powershell”任务时,我们始终会看到执行暂停30秒

这使得即使是非常简单的远程脚本调用也至少需要30秒才能完成

将任务更改为普通powershell任务,手动设置PSSession并发出完全相同的Invoke命令,运行速度要快得多

所以问题是,这是Azure Devops服务器中的一个bug,还是我们需要为远程机器任务上的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
2019-10-10T04:51:03.4296728Z###[部分]开始:-停止站点
2019-10-10T04:51:03.4727773Z==============================================================================
2019-10-10T04:51:03.4728808Z任务:目标机器上的PowerShell
2019-10-10T04:51:03.4728850Z说明:使用PSSession和Invoke命令在远程计算机上执行PowerShell脚本以进行远程处理
2019-10-10T04:51:03.4728886Z版本:3.1.2
2019-10-10T04:51:03.4728935Z作者:微软公司
2019-10-10T04:51:03.4728970Z帮助: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为计算机创建的会话:“”
2019-10-10T04:51:08.9207041Z===================================================================================================================================================================================================================================================
2019-10-10T04:51:38.9317626Z======================================================================================================================================================================================================================================================================================================
2019-10-10T04:51:38.932516Z##[命令]&'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'-NoLogo-NoProfile-NonInteractive-interactive-ExecutionPolicy Unrestricted-command''C:\Users\\AppData\Local\Temp\f228e8e1-f90a-4263-89cd-55320f5ad80b.ps1'
2019-10-10T04:51:38.9630832Z
2019-10-10T04:51:39.0526046Z计算机名“”的脚本执行成功
2019-10-10T04:51:39.3236823Z###[章节]整理:-停止现场
从2019-10-10T04:51:08.9207041Z到2019-10-10T04:51:38.9317626Z的30秒暂停。我们在所有针对机器任务的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" `
}
$password=converttosecurestring“$(密码)”-AsPlainText-Force
$cred=新对象System.Management.Automation.PSCredential($(用户),$密码)
$session=New PSSession-ComputerName$(服务器)-凭证$cred-usesl
调用命令-Session$Session-ScriptBlock{`
复制项目“C:\Users\\Documents\app\u offline.htm”`
“$(部署路径)\app\u offline.htm”`
}

您似乎正在使用最新的任务版本(3.*),那么使用该任务的旧版本如何?(2.*,1.*@John Sivertsen您的问题进展如何?您是否尝试了Andy提供的建议?任务的旧版本没有问题。但是,与版本3相比,它们非常有限,因此它们不是真正的替代品。