Azure Invoke-AzureRmVMRunCommand - выполняется выполнение расширения команды «Выполнить» - PullRequest
0 голосов
/ 10 мая 2018

Я пытаюсь запустить простой скрипт на виртуальной машине Azure (Windows) с помощью Invoke-AzureRmVMRunCommand, а также с помощью Invoke-RestMethod командлета. Просто пытаюсь получить статус службы DHCP.

  1. Пробовал после перезапуска виртуальных машин
  2. Создана новая виртуальная машина для запуска того же скрипта, но с той же ошибкой
  3. Попытка запуска команды invoke с другого компьютера

Скрипт, хранящийся в файле test.ps1

Get-Service DHCP

Команда:

Invoke-AzureRmVMRunCommand -ResourceGroupName $Resource_Group -VMName $Resource_Name -CommandId RunPowerShellScript -ScriptPath 'C:\Vincent\Azure\AzureVM\Test.ps1'

Я даже пытался использовать Azure API, но та же ошибка: Команда:

$Body = @"
{
  "commandId": "RunPowerShellScript",
  "script": [
    "Get-Service DHCP"
  ]
}
"@

$AppID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$Key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$TenantId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$SubscriptionID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

$GetToken = "https://login.microsoftonline.com/$TenantId/oauth2/token?tenant_id=$TenantId"
$Access_Token = Invoke-RestMethod -Method Post -Uri $GetToken -Body "grant_type=client_credentials&client_id=$AppID&client_secret=$Key&resource=$resource"
$Token = $Access_Token.access_token


$API = "https://management.azure.com/subscriptions/$SubscriptionID/resourceGroups/$Resource_Group/providers/Microsoft.Compute/virtualMachines/$VMName/runCommand?api-version=2017-03-30"
Invoke-RestMethod -Method Post -Uri $API -Headers @{Authorization = "Bearer $Token"} -Body $Body -ContentType 'application/json' -OutVariable Result

Ошибка: Invoke-AzureRmVMRunCommand:

Invoke-AzureRmVMRunCommand: ресурс «Microsoft.Compute / virtualMachines / XXXXXXXX» под ресурсом группа 'XXXXXX' не найдена. ErrorCode: ResourceNotFound ErrorMessage: ресурс «Microsoft.Compute / virtualMachines / XXXXXXXX» в группе ресурсов «XXXXXX» не был найден. StatusCode: 404 ReasonPhrase: не найдено Код операции: d5a9e664-92e2-45d6-b5e8-b3d5bd65814c В строке: 1 символ: 1 + Invoke-AzureRmVMRunCommand -ResourceGroupName $ Resource_Group -VMName ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (:) [Invoke-AzureRmVMRunCommand], ComputeCloudException + FullyQualifiedErrorId: Microsoft.Azure.Commands.Compute.Automation.InvokeAzureRmVMRunCommand

Ошибка API:

Invoke-RestMethod: {"error": { "код": "конфликт", "message": "Выполняется расширение расширения команды Run. Пожалуйста, дождитесь завершения, прежде чем вызывать команду run." }} В строке: 23 голец: 1 + Invoke-RestMethod -Metod Post -Uri $ API -Headers @ {Authorization = "... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (System.Net.HttpWebRequest: HttpWebRequest) [Invoke-RestMethod], WebException + FullyQualifiedErrorId: WebCmdletWebResponseException, Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вы получаете сообщение об ошибке «ресурс не найден»:

Ошибка: Invoke-AzureRmVMRunCommand:

Invoke-AzureRmVMRunCommand: Ресурс «Microsoft.Compute / virtualMachines / XXXXXXXX» в группе ресурсов 'XXXXXX' не найдено . ErrorCode: ResourceNotFound ErrorMessage: Ресурс "Microsoft.Compute / virtualMachines / XXXXXXXX" в разделе ресурса группа 'XXXXXX' не найдена. StatusCode: 404 ReasonPhrase: не найдено OperationID: d5a9e664-92e2-45d6-b5e8-b3d5bd65814c В строке: 1 символ: 1 + Invoke-AzureRmVMRunCommand -ResourceGroupName $ Resource_Group -VMName ... +

+ CategoryInfo : CloseError: (:) [Invoke-AzureRmVMRunCommand], ComputeCloudException + FullyQualifiedErrorId :
Microsoft.Azure.Commands.Compute.Automation.InvokeAzureRmVMRunCommand

И затем вы получаете сообщение об ошибке «Вы запускаете invoke-azurermvmruncommand», подождите, пока это не будет завершено:

Ошибка API:

Invoke-RestMethod: {"error": {"code": " Conflict ", "message": " Run Выполняется расширение команды . Пожалуйста, дождитесь завершения перед вызовом команды запуска. "}} В строке: 23 символа: 1 + Invoke-RestMethod -Metod Post -Uri $ API -Headers @ {Authorization = " ... +

+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod],
WebException + FullyQualifiedErrorId :
WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

запустите это, чтобы проверить, находится ли виртуальная машина там, где она должна быть, а затем ваш скрипт:

get-azurermvm -resourcegroupname $Resource_Group -Name $Resource_Name
$file = "C:\Vincent\Azure\AzureVM\Test.ps1"
Invoke-AzureRmVMRunCommand -ResourceGroupName $Resource_Group -VMName $Resource_Name -CommandId RunPowerShellScript -ScriptPath $file

Если это не помогло, поделитесь с нами $Resource_Name.GetType() и $Resource_Group.GetType()

0 голосов
/ 11 мая 2018

Invoke-AzureRmVMRunCommand Команда запуска на виртуальной машине.

Вы получите сообщение об ошибке, если неправильно указали « ResourceGroupName ».

Вы можете проверить скриншот ниже: я предоставил неправильную группу ресурсов и изменил на правильную группу ресурсов, которая дает успех.

enter image description here

В случае, если он показывает, что выполняется выполнение расширения команды Выполнить, вы можете проверить операцию в Портал Azure => Журнал активности:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...