Invoke-AzVMRunCommand 日志输出,错误处理
Invoke-AzVMRunCommand log output, error handling
一旦我们 运行 命令“Invoke-AzVMRunCommand”在远程 VM 上执行 PS 脚本,它总是成功,即使实际上失败了。我知道远程 VM 那里有日志文件:
"C:\Packages\Plugins\Microsoft.CPlat.Core.RunCommandWindows.1.3\Status"
问题:
但是如何在本地 powershell、try-catch 等上检索错误并没有显示出来。
什么是使用“Invoke-AzVMRunCommand”的正确错误处理,理想情况下在 .txt 中获得结果,类似于:
| Out-File -Filepath xxx.txt
谢谢。
最终经过长时间的测试,我得到了这个解决方案,它从远程脚本执行中抛出错误并将其记录在 .txt 文件中:
$result = Invoke-AzVMRunCommand -ErrorAction Stop -ResourceGroupName "MyRg" -Name "MyVM" -CommandId 'RunPowerShellScript' -ScriptPath MyScript.ps1
Remove-Item -path script.ps1
if ($result.value.Message -like '*error*')
{
Write-Output "Failed. An error occurred: `n $($result.value.Message)" | Out-File -Filepath C:\OutputLog.txt -Append
throw $($result.value.Message)
}
else
{
Write-Output "Success" | Out-File -Filepath C:\OutputLog.txt -Append
}
一旦我们 运行 命令“Invoke-AzVMRunCommand”在远程 VM 上执行 PS 脚本,它总是成功,即使实际上失败了。我知道远程 VM 那里有日志文件:
"C:\Packages\Plugins\Microsoft.CPlat.Core.RunCommandWindows.1.3\Status"
问题:
但是如何在本地 powershell、try-catch 等上检索错误并没有显示出来。 什么是使用“Invoke-AzVMRunCommand”的正确错误处理,理想情况下在 .txt 中获得结果,类似于:
| Out-File -Filepath xxx.txt
谢谢。
最终经过长时间的测试,我得到了这个解决方案,它从远程脚本执行中抛出错误并将其记录在 .txt 文件中:
$result = Invoke-AzVMRunCommand -ErrorAction Stop -ResourceGroupName "MyRg" -Name "MyVM" -CommandId 'RunPowerShellScript' -ScriptPath MyScript.ps1
Remove-Item -path script.ps1
if ($result.value.Message -like '*error*')
{
Write-Output "Failed. An error occurred: `n $($result.value.Message)" | Out-File -Filepath C:\OutputLog.txt -Append
throw $($result.value.Message)
}
else
{
Write-Output "Success" | Out-File -Filepath C:\OutputLog.txt -Append
}