我想每天启动一个位于 VM 中的 exe。exe是5分钟长,所以我想使用azure自动化启动vm,运行exe,完成后停止vm。
我查看了网络上的一些资源,我可以使用以下命令启动 VM:
Start-AzureVM -Name $VMName -ServiceName $ServiceName
我在示例中看到人们在某个时间在其他工作中停止 vm,但是是否可以启动 vm,运行 exe 并在 exe 终止时停止 vm?
我想每天启动一个位于 VM 中的 exe。exe是5分钟长,所以我想使用azure自动化启动vm,运行exe,完成后停止vm。
我查看了网络上的一些资源,我可以使用以下命令启动 VM:
Start-AzureVM -Name $VMName -ServiceName $ServiceName
我在示例中看到人们在某个时间在其他工作中停止 vm,但是是否可以启动 vm,运行 exe 并在 exe 终止时停止 vm?
您可以通过自动化启动 VM,然后从 Powershell 脚本启动 exe。当 exe 退出时,您可以调用 Stop-AzureVM / Stop-AzureRmVM
是的,您可以使用位于 Windows 远程管理 (WinRM) 之上的 PowerShell 远程会话来实现此目的。
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(经典 VM) ARM = IaaSv2
在 ASM 中配置 IaaS VM 时,它们必须是“云服务”容器的成员。相反,在 ARM / IaaSv2 中,您可以创建 VM 实例作为 Azure 订阅(帐户)的顶级成员,但需要注意的是,所有基于 ARM 的云资源都必须部署到“资源组”中。
ASM 和 ARM 具有完全独立的PowerShell 模块。ASM 命令是Start-AzureVM
,ARM 等效命令是Start-AzureRmVM
. 由于 ASM 和 ARM 架构的内在差异,这两个命令也有不同的参数。ASM 版本要求您指定 IaaS VM 所属的“云服务”,而 ARM 版本要求您指定 VM 所属的“资源组”。
对于任何可能访问这里的人,这里是启动 VM、运行脚本和停止 VM 的示例。
https://github.com/shanjin14/AzureAutomation
在 RunPython.ps1 中只需要将完整的文件路径放入 exe 文件如“C:\abc.exe”
干杯。希望能帮助到你