【问题标题】:Start/Stop all VMs under a specific subscription启动/停止特定订阅下的所有 VM
【发布时间】:2014-01-02 10:34:18
【问题描述】:

我正在使用 Azure Powershell cmdlet 来启动/停止 VM。

Start-AzureVM [-ServiceName] <String> [-Name] <String> [ <CommonParameters>]

Stop-AzureVM [-ServiceName] <String> [-Name] <String> [[-StayProvisioned]] [[-Force]] [ <CommonParameters>]

是否有一个命令可以启动/停止特定订阅下的所有虚拟机而不是单个虚拟机?如果没有,我正在寻找一个脚本来为每个 VM 并行运行上述代码多次。

【问题讨论】:

    标签: powershell azure azure-virtual-machine azure-powershell


    【解决方案1】:

    Start-AzureVM 和 Stop-AzureVM 现在支持通配符,允许您并行启动/并行停止同一服务名称中的任何/所有 VM。在这里,您可以看到这一点,我刚刚在一个服务中并行启动了几个虚拟机:

    现在:如果您想要整个订阅中的所有虚拟机,您始终可以枚举所有服务命名空间,然后在其中启动虚拟机。这是一个例子——根据你认为合适的方式调整它,用于特定的数据中心等。

    枚举服务示例:

    Get-AzureService | Select ServiceName
    

    现在来做点什么,而不是仅仅列出服务:

    Get-AzureService | Foreach-Object { Start-AzureVM -ServiceName $_.ServiceName -Name "*" }
    

    注意:我没有测试最后一个,因为我不想启动我的所有虚拟机,但类似的东西应该适合你作为批量“在我订阅的每个服务中启动单个虚拟机。 "

    【讨论】:

    • 在使用通配符语法时,我必须将 -VM 替换为 -Name 并添加 -Force 开关。
    • 哎呀——这会教我在不测试的情况下发布代码。 :) 编辑参数名称。
    【解决方案2】:

    Very True-Start-AzureVM 和 Stop-AzureVM 现在支持通配符,允许您并行启动/并行停止同一服务名称中的任何/所有 VM。

    根据问题启动/停止特定订阅下的所有虚拟机是不可能的。但是,可以在特定服务名称下启动/停止所有 VM。

    启动-AzureVM -ServiceName "sa12345" 将启动服务名称 sa12345 下的所有 azure vm

    【讨论】:

    • 这是否为已经给出和接受的答案添加了任何新内容?我猜不是……
    • 我也面临同样的挑战。所以,我只是给出了我的意见:)
    猜你喜欢
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多