2016-07-01 14 views
1

Ich verwende ein Azure Powershell Runbook, um ein Powershell-Skript auf einer azure virtuellen Maschine auszuführen. Ich finde keine Möglichkeit, die Ausgabe des Remote-Skripts zu erhalten, wenn ich die azure Resource Manager-Funktionen verwende, die ich für meine Bereitstellung verwenden muss. Es gibt viele Beispiele, um die ‚Nicht-Ressourcen-Manager‘ Art und Weise verwenden, die wie folgt aussieht:Wie kann ich die Ausgabe einer CustomScriptExtension erhalten, wenn ich Azure Resource Manager verwende?

# 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 

Die $ Ausgangsgröße enthält dann die Standard- und Fehlerausgabe des Skripts, die ausgeführt wurde. Der gleiche Code sieht ziemlich ähnlich für meine Ressourcen-Manager Version:

#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 

Aber der Ausgang ist völlig anders und ich etwas finde, dass die Standardausgabe oder Fehlerausgabe enthält.

Weiß jemand, wie man die Ausgabe mit Hilfe der azure Ressourcenmanagerfunktionen holt?

Grüße

Christian Erhardt

Antwort

1

ok, fand ich die Antwort! Sie können jederzeit das Ergebnis mit Hilfe des Befehls Get-AzureRmVmDiagnosticExtension

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

etwas Wir kommen wieder abfragen wie

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

Sie nur das Skript Informationen abfragen aus und seinen Status, aber man kann das nicht sehen Ausgabe Ihres Skripts. Kann jemand die Ausgabe des Skripts sehen?

0

In meinen Tests kann Get-AzureRmVMExtension auch abgerufen werden, die wohl die logischste zu verwenden ist. Sie müssen den Parameter -Status angeben, sonst erhalten Sie die Status- und Substatus-Werte nicht zurück.

Auch wenn es in dem Ausgabeabschnitt eine Resource Manager-Vorlage abrufen, so etwas wie das funktioniert (obwohl ich nicht gern der hartcodierte Nullindex bin):

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