1

Я использую Laure Powershell Runbook для выполнения сценария powershell на лазурной виртуальной машине. Я не нахожу способ получить выходные данные удаленного сценария, когда я использую функции управления ресурсами azure, которые я должен использовать для моего развертывания. Есть много примеров, используя способ «менеджера несырьевого», который выглядит следующим образом:Как я могу получить результат CustomScriptExtenstion при использовании Azure Resource Manager?

# Execute remote script 
$Vm = Get-AzureVM -ServiceName "DSCDemo" -Name "DSCPull" 
Set-AzureVMCustomScriptExtension -ContainerName scripts -StorageAccountName psmag -FileName user.ps1 -Run user.ps1 -VM $vm | Update-AzureVM -Verbose  
# Get output  
$vm = Get-AzureVM -ServiceName DSCDemo -Name DSCPull  
$output = $Vm.ResourceExtensionStatusList.ExtensionSettingStatus 

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

#Execute remote script 
$vm = Get-AzureRmVM -Name "DSCPull" -ResourceGroupName $ResourceGroupName 
$result = Set-AzureRmVMCustomScriptExtension -ResourceGroupName $ResourceGroupName ` 
               -VMName "DSCPull" ` 
               -Name 'user' ` 
               -Location $vm.Location ` 
               -StorageAccountName psmag ` 
               -StorageAccountKey '<key>' ` 
               -FileName "user.ps1" ` 
               -ContainerName "scripts" ` 
               -RunFile "user.ps1" 
$output = Get-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName -Status 

Но выход совершенно разные, и я действительно нахожу ничего, что содержит стандартный выходной или ошибка вывода.

Кто-нибудь знает, как получить результат с помощью функций менеджера ресурсов лазурного листа?

С уважением

Christian Эрхардт

ответ

1

нормально, я нашел ответ! Вы всегда можете запросить результат с помощью команды Get-AzureRmVmDiagnosticExtension

$output = Get-AzureRmVMDiagnosticsExtension -ResourceGroupName $ResourceGroupName -VMName 'DSCPull' -Name 'user' -Status 
$output.SubStatuses[0] 
$output.SubStatuses[1] 

Вернется что-то вроде

Code   : ComponentStatus/StdOut/succeeded 
Level   : Info 
DisplayStatus : Provisioning succeeded 
Message  : my output on remote 
Time   : 


Code   : ComponentStatus/StdErr/succeeded 
Level   : Info 
DisplayStatus : Provisioning succeeded 
Message  : 
Time   : 
0

вы можете только запросить из информации сценария и его статус, но вы не можете увидеть вывод вашего скрипта. кто-нибудь знает, как увидеть вывод скрипта?

0

В моем тестировании также может быть получен Get-AzureRmVMExtension, который, возможно, более логичен для использования. Вы должны включить параметр -Status, иначе вы не получите статус и значения подстановки обратно.

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

"outputs": { 
 
    "foo": { 
 
     "type": "string", 
 
\t  "value": "[reference('Microsoft.Compute/virtualMachines/my-vm/extensions/my-script').instanceView.substatuses[0].message)]" 
 
\t } 
 
}