azure - 使用 Invoke-AzVMRunCommand 的简单脚本运行时间过长
问题描述
我有一些没有公共 IP 的 Azure VM。我需要从 Azure 管道对它们运行一些自定义的 powershell 脚本。我不能在这里使用预定义的 YAML 任务,因为它们仅适用于具有公共 IP 的 VM。
我正在使用Invoke-AzVMRunCommand powershell 命令。不幸的是,有时它会运行长达 30 分钟,或者在最坏的情况下直到超时。我不时随机注意到这个问题,我在这里看不到每个案例之间的任何相关性。
Invoke-AzVMRunCommand
-ResourceGroupName $vmResourceGroup `
-VMName $vmName `
-CommandId 'RunPowerShellScript' `
-ScriptPath $scriptPath `
-Parameter $parameters
指定脚本路径下的示例简单脚本:
netsh interface portproxy add v4tov4 listenport=$port connectport=$cPort connectaddress="127.0.0.1"
netsh advfirewall firewall add rule name="Test" dir=in action=allow protocol=TCP localport=$port
它通常运行长达 3 分钟。
是否有其他替代方法可以在没有公共 IP 的 Azure VM 上远程运行脚本?对于我不知道的这种情况,也许有更好的方法。
解决方案
这可能是很多事情,这里有 3 种可能性:
VM 上有一个挂起的进程。尝试重新启动。
有几个管道启动相互阻塞的 powershell 脚本。尝试禁用一些管道,这样就不会发生这种情况。
该脚本在与存储通信时出现问题。尝试为 Azure 存储启用服务终结点。请参阅:https ://docs.microsoft.com/en-us/azure/virtual-network/tutorial-restrict-network-access-to-resources
推荐阅读
- javascript - 如何为映射的对象元素赋予不同的样式?
- python - 如果列包含列表,则复制数据帧行的函数
- python - 如何从发布请求函数 django 视图中检索值。DRF
- python - Pandas Dataframe 问题:如果为 NaN,则减去下一行并添加特定值
- android - 使用导航组件对 DialogFragment 进行动画转换
- python - 使用内联消息在 Python 中写入日志
- python - 删除数组中的索引
- ios - Swift Software 在后台应用程序后导致连接中止
- python - 如何仅打印精确列号大于 x 的行?带有 Python 的表格 API
- c# - 请求/回复 REST API .NET CORE