Start-AzVM: nie można powiązać parametru „DefaultProfile” podczas uruchamiania elementu Runbook platformy Azure

Nov 22 2020

Pracuję nad tym oficjalnym samouczkiem zespołu MS Azure, aby uruchomić plik, PowerShell Workflow runbookaby rozpocząć VM. Ale kiedy uruchamiam następujący element Runbook ( z kroku 6 samouczka ), pojawia się błąd pokazany poniżej. Pytanie : Czego może mi brakować i jak możemy rozwiązać ten problem?

Uwaga : Start-AzVM pochodzi z modułu Az.Compute, który już zaimportowałem.

kod elementu 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
}

Błąd :

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

Odpowiedzi

2 JoyWang Nov 23 2020 at 02:12

Wygląda na to, że jest to błąd w dokumencie, w tym scenariuszu należy użyć Set-AzContextdo ustawienia subskrypcji zamiast używać Get-AzSubscriptiondo uzyskania subskrypcji, zmienić polecenie jak poniżej, będzie działać dobrze.

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
}