这不是this question的副本,因为在MS做出改变后向兼容性后,该解决方案不再有效。
我需要以编程方式(通过Azure Powershell)启动/停止以编程方式创建的VM(通过Azure Powershell)。文档说我需要提供一个"服务名称",但我找不到任何关于如何从VM获取它的参考:
Stop-AzureVM -ServiceName $hostname -Name $hostname
Start-AzureVM -ServiceName $hostname -Name $hostname
文档还建议使用Get-AzureService
和(我认为)允许我提供个人资料而不是服务。但是,使用Select-AzureRmProfile
我只能获得Microsoft.Azure.Commands.Profile.Models.PSAzureProfile
,但Get-AzureService
需要Microsoft.Azure.Commands.Profile.Models.PSAzureSMProfile
。我被卡住了。
帮助?
答案 0 :(得分:3)
Azure中有两个控制平面:Azure服务管理(ASM)和Azure资源管理器(ARM)。使用ASM创建的所有VM都具有云服务名称和VM名称。我怀疑您创建了一个ARM VM,其资源组名称取代了云服务名称。 ARM PowerShell cmdlet在名称中都使用AzureRm而不是Azure。
在ARM中,您使用以下内容:
Start-AzureRmVM -Name $ vmName -ResourceGroupName $ resourceGroupName
Stop-AzureRmVM -Name $ vmName -ResourceGroupName $ resourceGroupName
答案 1 :(得分:1)
如果您知道名称而不是服务名称,那么......
Get-AzureVM | Where {$_.Name -eq "VMNAME"} | Stop-AzureVM
但这完全取决于你是否拥有VM的名称而不是服务名称,你的问题没有说明,所以我假设你在这里做! :d
但是,如果这不起作用,请评论你对VM的详细信息,看看我能做些什么。