1

J'utilise un Runner Azure Powershell pour exécuter un script PowerShell sur une machine virtuelle Azur. Je ne trouve pas un moyen d'obtenir la sortie du script distant lorsque j'utilise les fonctions du gestionnaire de ressources azure, que je dois utiliser pour mon déploiement. Il y a des exemples de lots en utilisant comme « gestionnaire non-ressources », qui ressemble à ceci:Comment puis-je obtenir la sortie d'une extension CustomScriptExtenstion lors de l'utilisation d'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 

La variable de sortie $ contient alors la sortie standard et l'erreur du script, qui a été exécuté. Le même code semble assez similaire pour ma version de gestionnaire de ressources:

#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 

Mais la sortie est complètement différent et je trouve tout ce qui contient la sortie standard ou la sortie d'erreur.

Est-ce que quelqu'un sait comment récupérer la sortie à l'aide des fonctions du gestionnaire de ressources azur?

Cordialement

Christian Erhardt

Répondre

1

ok, j'ai trouvé la réponse! Vous pouvez toujours interroger le résultat avec l'aide de la commande Get-AzureRmVmDiagnosticExtension

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

Retournera quelque chose comme

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

vous ne pouvez interroger sur les informations de script et son statut, mais vous ne pouvez pas voir la sortie de votre script. quelqu'un sait comment voir la sortie du script?

0

Dans mes tests, il peut également être récupéré Get-AzureRmVMExtension, qui est sans doute le plus logique à utiliser. Vous devez inclure le paramètre -Status, sinon vous ne récupérez pas les valeurs status et substatus.

En outre, si la récupération dans la section de sortie d'un modèle de gestionnaire de ressources, quelque chose comme ça fonctionne (bien que je ne suis pas fan de l'indice zéro codé en dur):

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