Простой скрипт выполняется слишком долго с использованием Invoke-AzVMRunCommand

У меня есть несколько виртуальных машин Azure без общедоступных IP-адресов. Мне нужно запустить на них несколько пользовательских сценариев PowerShell из конвейеров Azure. Я не могу использовать здесь предопределенные задачи YAML, так как они работают только для виртуальных машин с общедоступными IP-адресами.

Я использую команду powershell Invoke-AzVMRunCommand. К сожалению, иногда он работает до 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 минут.

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


person Mike26    schedule 25.11.2020    source источник


Ответы (1)


Это может быть много вещей, вот 3 возможности:

  1. На виртуальной машине есть зависший процесс. Попробуйте перезагрузиться.

  2. Существует несколько конвейеров, запускающих сценарии powershell, которые блокируют друг друга. Попробуйте отключить некоторые конвейеры, чтобы этого не произошло.

  3. У скрипта проблемы с хранилищем. Попробуйте включить конечную точку службы в хранилище Azure. См.: https://docs.microsoft.com/en-us/azure/virtual-network/tutorial-restrict-network-access-to-resources

person Shiraz Bhaiji    schedule 25.11.2020
comment
Спасибо, я проверю это - person Mike26; 26.11.2020