0

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

我查看了网络上的一些资源,我可以使用以下命令启动 VM:

Start-AzureVM -Name $VMName -ServiceName $ServiceName

我在示例中看到人们在某个时间在其他工作中停止 vm,但是是否可以启动 vm,运行 exe 并在 exe 终止时停止 vm?

4

3 回答 3

2

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

于 2015-12-08T16:35:35.990 回答
1

PowerShell 远程处理

是的,您可以使用位于 Windows 远程管理 (WinRM) 之上的 PowerShell 远程会话来实现此目的。

Azure 自动化 Runbook 的高级工作流如下所示:

Start-AzureVM ...
Invoke-Command ...
Stop-AzureVM ...

Invoke-CommandPowerShell 命令使用 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(经典 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 所属的“资源组”。

于 2015-12-08T16:57:49.443 回答
0

对于任何可能访问这里的人,这里是启动 VM、运行脚本和停止 VM 的示例。

https://github.com/shanjin14/AzureAutomation

在 RunPython.ps1 中只需要将完整的文件路径放入 exe 文件如“C:\abc.exe”

干杯。希望能帮助到你

于 2020-06-09T03:43:33.103 回答