我想每天启动一个位于VM中的exe。 exe是5分钟,所以我想使用azure自动化来启动vm,运行exe,当它完成时,停止vm。
我查看了网络上的一些资源,我可以通过以下方式启动虚拟机:
Start-AzureVM -Name $VMName -ServiceName $ServiceName
我在例子中看到人们在某个时间停止其他工作的vm,但是有可能启动vm,运行exe并在exe终止时停止vm吗?
答案 0 :(得分:2)
您可以通过自动化启动VM,然后从Powershell脚本启动exe。当exe退出时,您可以调用Stop-AzureVM / Stop-AzureRmVM
答案 1 :(得分:1)
是的,您可以使用PowerShell远程处理会话,它位于Windows远程管理(WinRM)之上,以实现此目的。
Azure自动化Runbook的高级工作流程如下所示:
Start-AzureVM ...
Invoke-Command ...
Stop-AzureVM ...
Invoke-Command
PowerShell命令使用VM的公共WinRM端点为Azure虚拟机创建PowerShell远程处理会话(PSSession)。默认情况下,该命令将同步运行,除非您使用-AsJob
参数在Runbook Worker上作为PowerShell后台作业执行命令。如果您选择将远程命令(您的exe文件)作为后台作业调用,则可以在调用Wait-Job
之前使用Stop-AzureVM
命令等待其完成。
自动化工作的另一个主要因素是考虑您使用的是Azure服务管理(ASM)还是Azure资源管理器(ARM)。 Azure有两种不同的API,根据您创建VM的方式,您将使用其中一种。
ASM = IaaSv1(经典虚拟机) ARM = IaaSv2
在ASM中配置IaaS VM时,必须成为“Cloud Service”容器的成员。相反,在ARM / IaaSv2中,您可以创建VM实例作为Azure订阅(帐户)的顶级成员,但需要注意的是所有基于ARM的云资源必须被部署到“资源组”。
ASM和ARM有完全独立的 PowerShell模块。 ASM命令为Start-AzureVM
,ARM等效项为Start-AzureRmVM
。由于ASM和ARM体系结构的固有差异,这两个命令也有不同的参数。 ASM版本要求您指定IaaS VM所属的“Cloud Service”,而ARM版本要求您指定VM所属的“资源组”。
答案 2 :(得分:0)
对于任何可能访问这里的人来说,这里都是启动VM,运行脚本并停止VM的示例。
https://github.com/shanjin14/AzureAutomation
在RunPython.ps1中,只需要将完整文件路径放入exe文件 例如“ C:\ abc.exe”
干杯。希望对您有帮助