【问题标题】:Run Command on Virtual Machine failing & preventing other 'Invoke-AzureRmVMRunCommand'在虚拟机上运行命令失败并阻止其他“Invoke-AzureRmVMRunCommand”
【发布时间】:2019-12-23 18:20:53
【问题描述】:

问题:当我在 Azure Windows VM 上运行带有“Invoke-AzureRmVMRunCommand”的 Powershell Runbook 时,由于调用的命令中出现错误,我不得不停止该 Runbook(并且它空闲永远),所有新的 Runbook 重复都会失败,并显示 “正在执行运行命令扩展。请等待完成,然后再调用运行命令。”

这是在 VM 上运行 PS 脚本的运行手册语句:

Invoke-AzureRmVMRunCommand -ResourceGroupName $objVM.ResourceGroupName -Name $objVM.Name -CommandId 'RunPowerShellScript' -ScriptPath $strRemoteScriptFileNameTmp -Parameter $hshParams

'$strRemoteScriptFileNameTmp' 中的 PS 代码中包含此语句,它使 Runbook 空闲,即需要修复:

Invoke-Expression -Command "$strRunTimeEnv $strExecPath $strExecParaString"

-Command 然后看起来像这样;它应该将该 ODBC 驱动程序安装到 VM,并在使用 VM 的 PS CLI(RDP'd)执行时工作:

msiexec.exe /quiet /passive /qn /norestart /l* D:\msodbcsql_13.0_x64.log /package D:\UpdateODBC\Application\Live\msodbcsql_13.0_x64.msi IACCEPTMSODBCSQLLICENSETERMS=YES ADDLOCAL=ALL

问题:我知道 Runbook 的那个(孤立的)命令有 90 分钟的超时。但是,这个空闲在哪里,在 VM 或自动化帐户上?而且,我怎么能杀死它?在重新尝试运行 Runbook 之前等待 90 分钟似乎很荒谬。

(我并没有像 Msft 设置的那样完全进入一个高效的工作流程......是的,我已经阅读了关于这个主题的帖子,以及真正需要英语校对的 Msft 文档扬声器,顺便说一句。)

【问题讨论】:

    标签: azure azure-automation


    【解决方案1】:

    为了结束这一点,我只想分享 MSDN 在他们的回答中给出的内容:

    "...Invoke-AzureRmVMRunCommand 实际上是使用 REST 命令向 VM 发送 powershell 脚本..."

    “通过这种方法可以做的事情是有限制的:

    • 一次可以运行一个脚本。
    • 您无法取消正在运行的脚本。
    • 脚本可以运行的最长时间为 90 分钟。之后,它将超时。 "

    见: [https://docs.microsoft.com/en-us/azure/virtual-machines/windows/run-command#restrictions][1]

    最好的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      相关资源
      最近更新 更多