Start-AzVM: impossible de lier le paramètre 'DefaultProfile' lors de l'exécution d'un runbook Azure

Nov 22 2020

Je travaille sur ce didacticiel officiel de l'équipe MS Azure pour exécuter un PowerShell Workflow runbookpour démarrer un VM. Mais lorsque je lance le runbook suivant (à partir de l'étape 6 du didacticiel ), j'obtiens l'erreur ci-dessous. Question : Qu'est-ce que je peux manquer et comment pouvons-nous résoudre le problème?

Remarque : Start-AzVM provient du module Az.Compute que j'ai déjà importé.

code du runbook :

workflow MyFirstRunbook-Workflow
{
# Ensures that you do not inherit an AzContext in your runbook
Disable-AzContextAutosave –Scope Process

$Conn = Get-AutomationConnection -Name AzureRunAsConnection Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

$AzureContext = Get-AzSubscription -SubscriptionId $Conn.SubscriptionID

Start-AzVM -Name 'vm-cs-web01' -ResourceGroupName 'rg-cs-ansible1' -AzContext $AzureContext
}

Erreur :

Start-AzVM : Cannot bind parameter 'DefaultProfile'. Cannot convert the "a76c7e8f-210d-45e5-8f5e-525015b1c881" value of 
type "Deserialized.Microsoft.Azure.Commands.Profile.Models.PSAzureSubscription" to type 
"Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer".
At MyFirstRunbook-Workflow:11 char:11
+ 
    + CategoryInfo          : InvalidArgument: (:) [Start-AzVM], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Azure.Commands.Compute.StartAzureVMCommand

Réponses

2 JoyWang Nov 23 2020 at 02:12

On dirait que c'est une erreur dans le document, dans ce scénario, il devrait utiliser Set-AzContextpour définir l'abonnement au lieu d'utiliser Get-AzSubscriptionpour obtenir l'abonnement, changez la commande comme ci-dessous, cela fonctionnera bien.

workflow MyFirstRunbook-Workflow
{
# Ensures that you do not inherit an AzContext in your runbook
Disable-AzContextAutosave –Scope Process

$Conn = Get-AutomationConnection -Name AzureRunAsConnection Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

$AzureContext = Set-AzContext -SubscriptionId $Conn.SubscriptionID

Start-AzVM -Name 'vm-cs-web01' -ResourceGroupName 'rg-cs-ansible1' -AzContext $AzureContext
}