Azure VM 运行命令冻结并挂起,并开始阻止 DevOps 管道使用 Azure CLI 在 VM 上运行新的运行命令

问题描述 投票:0回答:1

我正在使用

az vm run-command create ..
工具在 Windows Azure VM 上运行几个 PowerShell 脚本作为 DevOps 管道的一部分。有时命令会冻结并且无法在适当的时间内完成。发生这种情况时,我无法再执行这些命令,并且它开始阻止 DevOps 管道运行。 ...而且如果我尝试使用
az vm run-command delete ..
删除运行命令,它也会冻结。

作为 DevOps 管道一部分的运行命令执行(和删除)示例:

# Execute the script on VM with run-command
az vm run-command create \
    --name RecreateBinariesFolder$(Build.BuildId) \
    --vm-name ${{ parameters.vmName }} \
    --resource-group my-group-${{ parameters.environment }} \
    --timeout-in-seconds 600 \
    --script "if(Test-Path C:\\temp\\packages\\){ Remove-Item -Path c:\\temp\\packages -Force -Recurse } ; if(!(Test-Path C:\\temp\\packages\\)){ mkdir c:\\temp\\packages }"
# Delete the run-command from VM
az vm run-command delete \
    --name RecreateBinariesFolder$(Build.BuildId) \
    --vm-name ${{ parameters.vmName }} \
    --resource-group my-group-${{ parameters.environment }} \
    --yes

它通常在新的虚拟机上运行良好,但在稍后的管道运行中一段时间后执行开始冻结。

有什么方法可以更稳定地执行运行命令,或者有其他方便的方法可以更轻松、更稳定地在 Windows 虚拟机上运行命令吗?

azure azure-devops azure-virtual-machine azure-cli
1个回答
0
投票

如果您的要求是运行 powershell 脚本,为什么不使用默认命令

RunPowerShellScript
,如
az vm run-command invoke
文档第三个示例中所述?

RunPowershellScript

 是 Windows VM 可用命令的一部分,如
使用操作运行命令在 Windows VM 中运行脚本中所述。

这可能是您的情况下的命令:

az vm run-command invoke \ --command-id RunPowerShellScript \ --name ${{ parameters.vmName }} \ -g my-group-${{ parameters.environment }} \ --scripts 'if(Test-Path C:\\temp\\packages\\){ Remove-Item -Path c:\\temp\\packages -Force -Recurse } ; if(!(Test-Path C:\\temp\\packages\\)){ mkdir c:\\temp\\packages }'
这样您就不需要创建新的命令类型并将其删除。

此外,在代码中您创建了一个新命令但从未调用它。您是否错过了调用它的代码?

虚拟机中可以创建的最大命令数似乎是 25(请参阅

docs,因此如果您尝试创建更多命令,系统可能无法工作。

© www.soinside.com 2019 - 2024. All rights reserved.