Azure Powershell用于停止订阅中的VM

时间:2014-09-04 08:01:51

标签: powershell azure

我是Powershell的新手,并且特别对Azure Powershell来说是全新的。我需要创建一个powershell脚本来关闭订阅中找到的所有VM。我想这需要在管理证书的帮助下完成。但不知道从哪里开始。我刚刚完成了一些简单的代码行来列出所有VM,如下所示:

Add-AzureAccount -Environment "AzureCloud"
$subscription = "my-sub-scri-ption"
Select-AzureSubscription -Current "SubName"
Set-AzureSubscription -SubscriptionName "SubName" 
Get-AzureVM -ServiceName "VM1"

收到的输出是“Get-AzureVM:值不能为空。 参数名称:subscriptionId“。

有人可以在这方面帮助我吗?

**编辑:**

我正在使用的powershell脚本如下:

Add-AzureAccount -Environment "AzureCloud"
Set-AzureSubscription -SubscriptionName "My Subs"
$serviceName = "Service01"
$vmName = "Service01"
Get-AzureVM | Stop-AzureVM -Force

虽然在运行时显示脚本执行成功,但我仍然可以看到vm已启动。请注意,serviceName和vmName在我的情况下是相同的。我的代码中有什么问题吗?

**重新编辑** 执行代码:

Add-AzureAccount -Environment "AzureCloud"
Set-AzureSubscription -SubscriptionName "My Subs"
$serviceName = "Service01"
$vmName = "Service01"
Get-AzureVM

以上代码出错:

Get-AzureVM : Value cannot be null.
Parameter name: subscriptionId
At D:\TC_PS\Untitled1.ps1:5 char:1
+ Get-AzureVM
+ ~~~~~~~~~~~
+ CategoryInfo          : CloseError: (:) [Get-AzureVM], ArgumentNullException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.GetAzureVMCommand

1 个答案:

答案 0 :(得分:4)

您可以从这里开始:Getting Started with Windows Azure PowerShell

然后,您只需运行Get-AzureVM即可返回每个云服务的所有虚拟机。

停止虚拟机:Stop-AzureVM -ServiceName xxx -Name vm-test-01

要停止订阅中的所有VM,只需运行:Get-AzureVM | Stop-AzureVM -Force

需要-Force开关来停止云服务的最后一个虚拟机,否则系统会在尝试停止服务中的最后一个虚拟机时抛出错误,以避免丢弃已发布的所有资源应用

如果未指定-StayProvisioned开关,则将取消分配虚拟机。这是Stop-AzureVM的默认行为。