我是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
答案 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
的默认行为。