Почему мой сценарий powershell не работает как runbook?
Я пытаюсь создать runbook по расписанию, которое запускает / останавливает одну классическую виртуальную машину.
Сценарий Powershell в Powershell ISE работает следующим образом:
Write-Output "Logging in to Azure"
$login = Login-AzureRmAccount
Write-Output "Listing all Subscriptions"
Get-AzureSubscription
Write-Output "Selecting Subscription"
$null = Select-AzureSubscription -SubscriptionId d8531d9b-ee40-4e8d-aef6-708b8ac3288c -ErrorAction Stop
# If there is a specific cloud service, then get all VMs in the service,
# otherwise get all VMs in the subscription.
Write-Output "Retrieving VM"
$VM = Get-AzureVM -Name TD-RS01 -ServiceName CS-DEVELOPMENT-3DOO
Write-Output "Starting VM"
$StartRtn = Start-AzureVM -Name $VM.Name -ServiceName $VM.ServiceName -ErrorAction Continue
if ($StartRtn.OperationStatus -ne 'Succeeded')
{
# The VM failed to start, so send notice
Write-Output ($VM.InstanceName + " failed to start")
}
else
{
# The VM started, so send notice
Write-Output ($VM.InstanceName + " has been started")
}
И вот мой рабочий процесс runbook:
workflow StarClassicVM
{
# Connect to Azure and select the subscription to work against
Write-Output "Retrieving Credential"
$Cred = Get-AutomationPSCredential -Name 'ScaleDBCredential'
Write-Output "Logging in to Azure"
$login = Login-AzureRmAccount -Credential $Cred -verbose -TenantId 66316b42-07e3-4a8f-9500-58cec9dc792e -ErrorAction Stop
Write-Output "Listing all Subscriptions"
Get-AzureSubscription
Write-Output "Selecting Subscription"
$null = Select-AzureSubscription -SubscriptionId 'd8531d9b-ee40-4e8d-aef6-708b8ac3288c' -ErrorAction Stop
Write-Output "Retrieving VM"
$VMs = Get-AzureVM -Name TD-RS01 -ServiceName CS-DEVELOPMENT-3DOO
Write Output "Starting VM"
$StartRtn = Start-AzureVM -Name TD-RS01 -ServiceName CS-DEVELOPMENT-3DOO -ErrorAction Continue
if ($StartRtn.OperationStatus -ne 'Succeeded')
{
# The VM failed to start, so send notice
Write-Output ($VM.InstanceName + " failed to start")
}
else
{
# The VM started, so send notice
Write-Output ($VM.InstanceName + " has been started")
}
}
Тот, который я запускаю в Powershell ISE, работает нормально, и я использую те же учетные данные, которые хранятся в ScaleDBCredential.
Я что-то пропустил? Нужно ли создавать ServicePrincipal для его работы в Runbook?
Кроме того, если я пытаюсь пройти аутентификацию через учетную запись "RunAs", это то же самое - он просто не перечисляет никаких подписок и говорит, что подписка с указанным идентификатором не существует, хотя это единственная подписка, которая есть.