我正在尝试运行Get-AzureVM
PowerShell命令,它运行良好,但没有返回任何输出。
也尝试了以下口味,但还是空白结果,有什么想法吗?
Get-AzureVM -Name "vmname" |Select-Object name,instancesize,location
您应该先调用Select-AzureSubscription "subscription name"
。
它可能默认订阅中没有任何虚拟机。
要查看您当前的订阅名称,请致电:
Get-AzureSubscription | select SubscriptionName
实际上上面的答案只是半正确的。
这让我拔出了我的恶毒头发,试图实现自动化(这需要7个小时的手动伪造才能开始工作!)。
简单地说,Azure中有两种类型的虚拟机;Classic和资源管理器。
如果您使用Switch-AzureMode -name AzureServiceManagement
然后使用Get-AzureVM
,您将列出您创建的所有经典VM。
如果您使用Switch-AzureMode -name AzureResourceManager
然后使用Get-AzureVM
,您将列出您创建的所有资源管理器(或新)VM。
记住,如果你试图实现自动化,那么你需要通过门户网站获得新模式下的虚拟机,而你通过管理创建的旧虚拟机(经典)在这种模式下是不可见的,你必须重新创建它们。
Azure有两种类型的管理系统:AzureServiceManagement(ASM)和AzureResourceManager(ARM)
为了控制这两种不同类型的管理系统,你应该在它们之间切换,如Azure Powershell Github项目页面主页中所述,但对于低于1.0.0的Azure Powershell版本来说也是如此,你可以在这里找到更多解释
对于那些有兴趣使用高于1.0.0的powershell版本控制ARM(AzureResourceManager)的人,他们应该使用以下格式的所有Cmdlet:[Verb]-AzureRm[Noun]
,例如New-AzureVm
变成New-AzureRmVm
,在我们的情况下Get-AzureVM
变成Get-AzureRmVm
总结:
- 低于1.0.0的Powershell版本,您应该在模式之间切换并使用
Get-AzureVM
,这在我和许多其他人看来非常令人困惑 - Powershell版本等于或大于1.0.0,您应该为ASM使用
Get-AzureVM
,为ARM使用Get-AzureRmVm
我知道这个问题已经被回答了,但我尝试了给出的答案,但它对我不起作用。我发现,我需要切换我的AzureMode。
为了解决这个问题,我运行了以下powershell脚本。
Switch-AzureMode -Name AzureResourceManager
如果脚本使用旧的功能以及新的Azure资源管理器cmdlet,则在AzureServiceManagement和AzureResourceManger之间切换Azure Powershell模式是一个可能的解决方案。此开关仅适用于Microsoft Azure Powershell 0.9.8或更低版本。