【问题标题】:Using Azure Powershell to shutdown VM created with no Cloud Service Name使用 Azure Powershell 关闭没有云服务名称的虚拟机
【发布时间】:2025-12-04 13:05:02
【问题描述】:

这不是 this question 的重复项,因为在 MS 做出破坏向后兼容性的更改后,该解决方案不再有效。

我需要以编程方式(通过 Azure Powershell)启动/停止以编程方式(通过 Azure Powershell)创建的 VM。文档说我需要提供一个“服务名称”,但我找不到任何关于如何从 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。我被卡住了。

帮助?

【问题讨论】:

    标签: powershell azure virtual-machine


    【解决方案1】:

    Azure 中有两个控制平面:Azure 服务管理 (ASM) 和 Azure 资源管理器 (ARM)。使用 ASM 创建的所有 VM 都具有云服务名称和 VM 名称。我怀疑您创建了一个 ARM VM,其资源组名称代替了云服务名称。 ARM PowerShell cmdlet 的名称中都包含 AzureRm 而不是 Azure。

    在 ARM 中,您使用以下内容:

    Start-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName

    停止-AzureRmVM -Name $vmName -ResourceGroupName $resourceGroupName

    【讨论】:

      【解决方案2】:

      如果您知道名称而不是服务名称,您可以这样做...

      Get-AzureVM | Where {$_.Name -eq "VMNAME"} | Stop-AzureVM
      

      但这完全取决于您是否拥有虚拟机的名称而不是服务名称,您的问题并未说明其他情况,所以我假设您这样做! :D

      但是如果这不起作用,请评论您对 VM 的详细信息,看看我能做什么。

      【讨论】:

        最近更新 更多