![](/img/trans.png)
[英]Powershell script to list last reboot of vm's under a Azure Subscription
[英]How to reboot a azure vm from powershell script and continue the remaining steps
我有一個天藍色的 VM。 我正在編寫一個執行兩個 .bat 文件的 powershell 腳本,然后它必須重新啟動 azure VM,然后它必須繼續執行剩余的 .bat 文件。
這是下面的腳本
步驟 1: set-location -path C:/temp
Step2: start-process cmd.exe /c "abc.bat" -wait
Step3: start-process cmd.exe /c "123.bat" -wait
Step4: restart-computer -Force
Step5: start-process cmd.exe /c "prod.bat" -wait
Step6: start-process cmd.exe /c "dev.bat" -wait
通過給出以下命令遠程執行此腳本
PS C:\> Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RunPowerShellScript' -ScriptPath '/Users/username/sample.ps1'
運行上述命令后,它執行到“第 4 步”為止。之后它不會繼續執行剩余的步驟
你能幫我解決這個問題嗎?
我可以想到兩種方法,並在下面詳細介紹它們:
使用注冊表項RUNONCE - 可用於指定系統將執行一次然后刪除的命令。
此處提供更多信息。
遠程運行時會稍作修改。
當您使用Invoke-AzVMRunCommand
,初始命令必須將 2 個腳本文件復制到遠程 VM 中的臨時位置並啟動第一個腳本(這包含步驟 1-3)
在第 4 步之前 - 您將在 RUNONCE 下創建一個注冊表項:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce
set-location HKLM:\Software\Microsoft\Windows\CurrentVersion\RunOnce
new-itemproperty . MyKey -propertytype String -value "Powershell c:\temp\script2.ps1"
或者,您可以直接在 RunOnce 鍵下添加 .bat 文件。
RUNONCE 鍵下的文件在登錄后執行並在執行后刪除。
您可以參考下面的文章,它創建了工作流並創建了ScheduledTask來恢復暫停的工作流。
workflow test-restart {
#STEPS 1-3
Restart-Computer -Wait
#STEPS 5 - 6
}
對於調度:
$act = New-ScheduledTaskAction -Execute $pstart -Argument $actionscript
$trig = New-ScheduledTaskTrigger -AtLogOn
注意:使用示例中的工作流不是強制性的。 您可以編寫自己的邏輯,以便在重新觸發后從您離開的點恢復 - 通過保留步驟數據。
這種方法的關鍵是創建一個計划任務,該任務被觸發以在重新啟動后自動繼續腳本。
即使在這種情況下,也可能需要將腳本本地復制到機器上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.