Start-AzVM : Azure Runbook을 실행할 때 매개 변수 'DefaultProfile'을 바인딩 할 수 없습니다.

Nov 22 2020

나는이 작업입니다 MS 푸른 팀의 공식 튜토리얼 A가 실행 PowerShell Workflow runbook을 시작합니다 VM. 그러나 다음 런북을 시작하면 ( 튜토리얼의 6 단계에서 ) 아래와 같은 오류가 발생합니다. 질문 : 내가 누락 된 것이 무엇이며 어떻게 문제를 해결할 수 있습니까?

설명 : Start-AzVM 은 이미 가져온 Az.Compute 모듈 에서 가져옵니다 .

런북 코드 :

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
}

오류 :

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

답변

2 JoyWang Nov 23 2020 at 02:12

문서의 실수 인 것 같습니다.이 시나리오에서는 Set-AzContext구독 Get-AzSubscription을 가져 오는 데 사용 하는 대신 구독을 설정하는 데 사용해야 합니다. 아래와 같이 명령을 변경하면 정상적으로 작동합니다.

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
}