启动VM,运行exe,在Azure自动化中停止VM

时间:2015-12-08 16:32:47

标签: azure azure-automation

我想每天启动一个位于VM中的exe。 exe是5分钟,所以我想使用azure自动化来启动vm,运行exe,当它完成时,停止vm。

我查看了网络上的一些资源,我可以通过以下方式启动虚拟机:

Start-AzureVM -Name $VMName -ServiceName $ServiceName

我在例子中看到人们在某个时间停止其他工作的vm,但是有可能启动vm,运行exe并在exe终止时停止vm吗?

3 个答案:

答案 0 :(得分:2)

您可以通过自动化启动VM,然后从Powershell脚本启动exe。当exe退出时,您可以调用Stop-AzureVM / Stop-AzureRmVM

答案 1 :(得分:1)

PowerShell Remoting

是的,您可以使用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命令等待其完成。

IaaSv1或IaaSv2?

自动化工作的另一个主要因素是考虑您使用的是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”

干杯。希望对您有帮助