#azure #azure-powershell #azure-automation #azure-runbook
#azure #azure-powershell #azure-автоматизация #azure-runbook
Вопрос:
Я работаю над этим официальным руководством от команды MS Azure, чтобы запустить a PowerShell Workflow runbook
для запуска a VM
. Но когда я запускаю следующий runbook (из шага 6 руководства), я получаю сообщение об ошибке, показанное ниже. Вопрос: Чего мне может не хватать и как мы можем решить проблему?
Примечание: Start-AzVM взят из модуля Az.Compute, который я уже импортировал.
код 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
}
Ошибка:
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
Ответ №1:
Похоже, это ошибка в документе, в этом сценарии он должен использоваться 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
}
Комментарии:
1. Ваше предложение сработало. Спасибо, что указали на ошибку в документе (несмотря на то, что я по ошибке предоставил неверную ссылку на учебное пособие, но вы нашли правильную ссылку. Я исправил, ссылку тоже). Также благодарим вас за то, что вы нашли время для самостоятельного тестирования runbook и опубликовали скриншот выходных данных, чтобы другие читатели тоже могли их увидеть.