Azure VM 运行 PowerShell 脚本不输出
Azure VM Run PowerShell Script doesn't Output
我正在尝试 运行 我的 Windows 10 Azure VM 中的 python 脚本。我已成功连接到 VM 和 运行 自动化 运行 书中的脚本,但在 运行 书完成后似乎没有输出 powershell 脚本中的任何内容。
我的 python 脚本存储在 C:\Users\username\Desktop\test.py
:
print("Hello World.")
我的 powershell 脚本存储在 C:\Users\username\Desktop\test.ps1
:
Write-Output "Starting Script..."
C:\Users\username\Python\python.exe C:\Users\username\Desktop\test.py
Write-Output "Shutting Down..."
我的 Azure 运行名为 VMRunTest 的书:
$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
throw $_.Exception
}
}
$rgname ="ParcelTracking"
$vmname ="ParcelTracking-Scraper"
$ScriptToRun = "C:\Users\username\Desktop\test.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Remove-Item -Path ScriptToRun.ps1
根据 documentation it also requires that I open the output port on the VM to allow the 443
port with the AzureCloud
tag. In the following image 你我的设置是什么。
当我执行 Azure Runbook 时,没有收到任何错误、警告和异常。这是以下输出:
Logging in to Azure...
Environments
------------
{[AzureChinaCloud, AzureChinaCloud], [AzureCloud, AzureCloud], [AzureGermanCloud, AzureGermanCloud], [AzureUSGovernme...
Value : {Microsoft.Azure.Management.Compute.Models.InstanceViewStatus,
Microsoft.Azure.Management.Compute.Models.InstanceViewStatus}
Name :
StartTime :
EndTime :
Status : Succeeded
Error :
Output :
Capacity : 0
Count : 0
Item :
因此,它似乎已经成功,但是我没有看到任何关于 Hello World.
语句或 powershell 脚本的输出语句的提及。所以,我只能假设 python 脚本没有执行。我也通过在 python 脚本上尝试这个过程知道这一点,该脚本应该需要大约 ~15 分钟到 运行 并且它会在 1 分钟内完成。
我想我很接近,只是在某处遗漏了一些小细节。任何帮助将不胜感激。
我可以重现你的问题,确实有效。
换行
Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
到
$run = Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Write-Output $run.Value[0]
然后您将能够看到输出(在我的虚拟机中,我没有安装 python,为了快速测试,我只使用 powershell,在您的情况下,它应该也可以)。
我正在尝试 运行 我的 Windows 10 Azure VM 中的 python 脚本。我已成功连接到 VM 和 运行 自动化 运行 书中的脚本,但在 运行 书完成后似乎没有输出 powershell 脚本中的任何内容。
我的 python 脚本存储在 C:\Users\username\Desktop\test.py
:
print("Hello World.")
我的 powershell 脚本存储在 C:\Users\username\Desktop\test.ps1
:
Write-Output "Starting Script..."
C:\Users\username\Python\python.exe C:\Users\username\Desktop\test.py
Write-Output "Shutting Down..."
我的 Azure 运行名为 VMRunTest 的书:
$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
throw $_.Exception
}
}
$rgname ="ParcelTracking"
$vmname ="ParcelTracking-Scraper"
$ScriptToRun = "C:\Users\username\Desktop\test.ps1"
Out-File -InputObject $ScriptToRun -FilePath ScriptToRun.ps1
Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Remove-Item -Path ScriptToRun.ps1
根据 documentation it also requires that I open the output port on the VM to allow the 443
port with the AzureCloud
tag. In the following image 你我的设置是什么。
当我执行 Azure Runbook 时,没有收到任何错误、警告和异常。这是以下输出:
Logging in to Azure...
Environments
------------
{[AzureChinaCloud, AzureChinaCloud], [AzureCloud, AzureCloud], [AzureGermanCloud, AzureGermanCloud], [AzureUSGovernme...
Value : {Microsoft.Azure.Management.Compute.Models.InstanceViewStatus,
Microsoft.Azure.Management.Compute.Models.InstanceViewStatus}
Name :
StartTime :
EndTime :
Status : Succeeded
Error :
Output :
Capacity : 0
Count : 0
Item :
因此,它似乎已经成功,但是我没有看到任何关于 Hello World.
语句或 powershell 脚本的输出语句的提及。所以,我只能假设 python 脚本没有执行。我也通过在 python 脚本上尝试这个过程知道这一点,该脚本应该需要大约 ~15 分钟到 运行 并且它会在 1 分钟内完成。
我想我很接近,只是在某处遗漏了一些小细节。任何帮助将不胜感激。
我可以重现你的问题,确实有效。
换行
Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
到
$run = Invoke-AzureRmVMRunCommand -ResourceGroupName $rgname -Name $vmname -CommandId 'RunPowerShellScript' -ScriptPath ScriptToRun.ps1
Write-Output $run.Value[0]
然后您将能够看到输出(在我的虚拟机中,我没有安装 python,为了快速测试,我只使用 powershell,在您的情况下,它应该也可以)。