Почему мой Azure Runbook не выполняет мой скрипт Python через Powershell

Когда я подключаюсь к своей виртуальной машине, чтобы запустить этот сценарий Powershell, все работает нормально.

Однако, если я попытаюсь запустить скрипт в моем Azure Runbook, он выполнится, но скрипт Python не сработает, и я не знаю почему :( Кажется, он просто пропускает его. Я что-то упускаю?

Это код в моем Runbook

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection 
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
    "Logging in to Azure..."
    Add-AzureRmAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        "are we here"
        throw $_.Exception

    }
}
$rgname ="MyResourceName"
$vmname ="MyVirtualMachine"
$ScriptToRun = "c:\mypath\myscript.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
$run = Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Write-Output $run.Value[0]
Remove-Item -Path ScriptToRun.ps1

Вот myscript.ps1 (Путь к Python установлен в переменных среды)

Write-Output "Script Started."
Python C:\myscripts\pythonscript.py
Write-Output "Script Ended." 

Затем я увижу этот результат

Script Started.
Script Ended.

Основной вывод py-скрипта должен быть посередине, но я ничего не получаю. Опять же, если я запускаю его локально, он работает нормально.

Спасибо за любую помощь


person Kahlil N    schedule 11.05.2021    source источник


Ответы (1)


Попробуйте перенести свой скрипт на новую версию _1 _ убедитесь, что вы установили Az.Accounts, Az.Compute в свою учетную запись автоматизации.

$connectionName = "AzureRunAsConnection"
try
{
    # Get the connection "AzureRunAsConnection 
    $servicePrincipalConnection=Get-AutomationConnection -Name $connectionName
    "Logging in to Azure..."
    Connect-AzAccount `
        -ServicePrincipal `
        -TenantId $servicePrincipalConnection.TenantId `
        -ApplicationId $servicePrincipalConnection.ApplicationId `
        -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch {
    if (!$servicePrincipalConnection)
    {
        $ErrorMessage = "Connection $connectionName not found."
        throw $ErrorMessage
    } else{
        Write-Error -Message $_.Exception
        "are we here"
        throw $_.Exception

    }
}
$rgname ="MyResourceName"
$vmname ="MyVirtualMachine"
$ScriptToRun = "c:\mypath\myscript.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
$run = Invoke-AzVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Write-Output $run.Value[0]
Remove-Item -Path ScriptToRun.ps1
person Joy Wang    schedule 03.06.2021