我有一个按计划运行的Azure Runbook。它在powershell中,并且该运行手册启动VM,并在启动的VM上执行脚本。我是怎么做到的
1)将要在VM上运行的脚本存储在存储帐户中 2)运行Powershell Runbook 3)Powershell Runbook使用wget命令复制第1步中的脚本 4)如下所示在Azure自动化powershell命令中调用Invoke-AzureRmVMRunCommand
wget "https://utilitystorageaccnt.blob.core.windows.net/utilitycontainer/token" -outfile ((Get-Location).path + "\Reporting Copy.ps1") -UseBasicParsing
Invoke-AzureRmVMRunCommand -ResourceGroupName $ResourceGroupName -VMName $VmName -CommandId 'RunPowerShellScript' -ScriptPath ((Get-Location).path + '\Reporting Copy.ps1') -ErrorVariable result
请不要使以上两个命令都在Powershell Runbook脚本中,而不是在VM上运行的实际脚本中。
面对两个问题
1)当此脚本Reporting Copy.ps1在VM上独立运行时,它可以正常工作,并且没有任何问题。使用Runbook运行它时,我在目标vm的日志文件中得到了这些错误。
“ New-AzStorageContext:术语“ New-AzStorageContext”未被识别为cmdlet,函数,脚本的名称 文件或可运行的程序。检查名称的拼写,或者是否包含路径,请验证路径是否正确 然后重试。”
2)即使发生此错误,它也不会终止并循环运行。该脚本执行复制操作,并一直循环直到所有复制完成。我可以处理终止代码,但我想知道如何强制终止运行手册。我试图将VM停止一个小时,然后恢复复制操作。 Azure中的运行簿状态显示为已完成。在资源管理器中显示了两个python进程,终止它们也不起作用。
任何帮助或提示都值得赞赏。
谢谢。
答案 0 :(得分:0)
好像您没有将Az PowerShell模块导入到我们的自动化帐户中。
请按照本教程操作:Az module support in Azure Automation
尝试仅使用Az模块而不使用AzureRM
答案 1 :(得分:0)
问题是因为我没有为所有这样的用户安装AZ模块。
安装模块-名称Az -AllowClobber -Scope AllUsers
我曾经使用过
安装模块-名称Az -AllowClobber-作用域CurrentUser
,并且由于自动化在其他用户上运行,因此出现了问题。感谢您的帮助。