Лучший способ периодически запускать скрипт Power-Shell на виртуальной машине Azure с другой виртуальной машины внутри подписки

Пытаетесь использовать пакет SDK для Azure nodejs и протестированную команду запуска виртуальной машины, как указано в Получите StdOut из RunCommand с помощью пакета SDK Javascript для виртуальной машины Azure. Производительность этого вызова плохая. Есть ли у пользователя разрешения на изменение значения тайм-аута для команды запуска виртуальной машины?

Любая другая альтернатива для отправки сценария.


person Sk8686    schedule 22.08.2019    source источник
comment
виртуальные машины находятся в одной сети? и позволяют ли машины использовать удаленную оболочку PowerShell: Enable-PSRemoting -Force   -  person terrencep    schedule 22.08.2019
comment
Не в том же vnet, но в той же подписке.   -  person Sk8686    schedule 22.08.2019


Ответы (1)


Да, производительность способа «запустить команду» не так хороша, если вы получаете ошибки тайм-аута с помощью SDK, возможно, прямой вызов остальных API будет обходным решением.

С точки зрения основы, когда вы используете SDK для вызова функции команды запуска, он вызывает этот API:

POST https://management.azure.com/subscriptions/<your subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Compute/virtualMachines/<VM Name>/runCommand?api-version=2018-04-01

Request Headers:
Content-Type: application/json
Authorization: Bearer <access token>

Request Body:
{"commandId":"RunPowerShellScript","script":["<script content>"]}

После успешного вызова вы получите код ответа 202, а в заголовке ответа будет параметр «location», значением которого является ссылка, и вы можете получить статус выполнения своей команды, используя его:  введите здесь описание изображения

введите здесь описание изображения

Таким образом, вы можете отслеживать текущий статус, вызывая этот URL, вместо того, чтобы ждать ответа в течение длительного времени.

Помимо способа «запустить команду» для запуска сценария ps на виртуальных машинах Azure, есть еще 3 способа сделать это:

  1. Расширение настраиваемого сценария виртуальной машины Azure
  2. Удаленный PowerShell
  3. Служба автоматизации Azure DSC

В этом блоге они хорошо описаны, вы можете выбрать один из них в зависимости от ваших требований.

Надеюсь, это поможет.

person Stanley Gong    schedule 26.08.2019
comment
Привет , как дела? - person Stanley Gong; 27.08.2019
comment
Главное здесь то, что одна виртуальная машина запускает скрипт для всех других виртуальных машин в подписке Azure. Я думаю, что все параметры нуждаются в дополнительной настройке, и моя цель - свести их к минимуму. - person Sk8686; 29.08.2019
comment
Чтобы быть конкретным, у меня есть приложение nodejs в виртуальной машине, которое пытается отправить сценарий PowerShell на все виртуальные машины в подписке Azure. Я протестировал подход с идентификацией пользователей, предоставляемый Azure, где виртуальная машина принимает на себя идентификацию и выполняет вызов команды запуска, но это происходит медленно. Итак, в настоящее время я изучаю стратегию, представленную в этой статье - social.msdn.microsoft.com/Forums/en-US/. Создайте общего пользователя AD на всех виртуальных машинах, запустите приложение узла с этим пользователем и выполняйте удаленные вызовы. - person Sk8686; 29.08.2019