2017-04-23 42 views
2

我试图通过PowerShell检索虚拟机的完整列表,但我无法拉动传统虚拟机,而且我无法理解RM和常规cmdlet之间的区别特别是在订阅时。Azure Powershell - 找不到经典的虚拟机

Get-AzureRMSubscription正确返回我的Azure帐户有权访问的订阅的完整列表。 Get-AzureSubscription什么都不返回。这意味着我可以使用Get-AzureRMVM从任意订阅中正确提取所有新样式的VM,但由于找不到'经典'样式的订阅,我无法提取任何现有的经典VM,因为我无法定义要查看哪个订阅。

我可以通过门户成功查看所有订阅中的所有虚拟机,但无论如何都无法通过Powershell查看。我全都没有想法,有什么我失踪?

+1

相关:https://serverfault.com/questions/744858/whats-the-difference-between-get-azurermvm-and-get-azurevm –

回答

2

Get-AzureRMSubscriptionGet-AzureSubscriptionGet-AzureRMVM是资源模式cmdlet,您的虚拟机是经典模式虚拟机,您应该使用经典的cmdlet。只需使用以下cmdlet即可。

#login your classic account 
Add-AzureAccount 
# Enumerates all configured subscriptions on your local machine. 
Get-AzureSubscription 
# Select the subscription to use 
Select-AzureSubscription -SubscriptionName "mysubscription" 
#get classic VM 
Get-AzureVM 
+0

正如OP中所提到的,Get-AzureSubscription不会返回任何内容,并且因此'Select-AzureSubscription'失败是因为它找不到要分配的订阅,因此'Get-AzureVM'失败,因为订阅尚未分配。 – CNoyer

+0

@CNoyer您是否在Portal和PowerShell上使用相同的帐户?你能否在Portal上提供关于虚拟机的截图?此外,你可以检查你的PowerShell版本。 'Get-Module -ListAvailable -Name Azure -Refresh'最新版本是3.7.0 –

+0

这可能是因为当您使用add-AzureAccount时,您正在登录到您的个人Microsoft帐户,并且您的订阅在您的工作帐户或恶意Versa 。当您使用Add-AzureAccount登录到Microsoft时,您会得到两个选项或个人选项。确保你选择了一个 订阅处于活动状态。 –

1

经典VM的是,当使用Azure的规范使用manage.windowsazure.com其中,每个虚拟机必须连接到它的云服务在默认情况下和资源,如虚拟网络和防火墙(ACL)进行了静态到每个资源。

基于Azure资源管理器(ARM)的部署为您提供了灵活的部署模型(例如,一个防火墙/ NSG用于x个虚拟机)的强大功能。详细的研究,可以在下面的链接中找到:

Azure Resource Manager based deployments explained

对于你的问题,你可以使用下面的cmdlet来获取所有经典的虚拟机。

#login your classic (work AD/Personal) account using the pop-up 
Add-AzureAccount 
# Get All subscriptions under the non-rm account. DO NOT USE Get-AzureRMSubscription for any classic resources 

Get-AzureSubscription 
# Select the subscription to use using the Subscription name or ID (if all your subscription names say pay-as-you-go for e.g. you may want to use your subscription ID) 

Select-AzureSubscription -SubscriptionName "enter-your-subscription-name" OR -SubscriptionId "alternatively-use-subscription-id" 

#List all the VM's in a variable for further use (if needed, else direct display) 

$vmList = Get-AzureVM 

#Output the Virtual Machines on the subscription 

Write-Output ($vmList) 

完成!

+0

如OP提到,'GET-AzureSubscription'返回任何内容,因此',因为它不能找到一个订阅分配选择,AzureSubscription'失败,从而'因为订阅尚未分配获取,AzureVM'失败。 – CNoyer

+1

这可能是因为当您使用add-AzureAccount时,您正在登录到您的个人Microsoft帐户,并且您的订阅在您的工作帐户或恶意Versa上。当您使用Add-AzureAccount登录到Microsoft时,您会得到两个选项或个人选项。确保你选择了一个 订阅处于活动状态。 –

+0

专门为此功能创建了一个帐户 - 一个通用的虚拟机管理员帐户 - 所以这可能不是这种情况。 – CNoyer