使用Set-AzureSubscription

时间:2019-09-05 20:06:10

标签: azure powershell

我正在尝试对azure订阅中的所有VM运行Powershell脚本。我使用AzureRunAsConnection连接到服务主体。使用Get-AzureVM会产生一个错误,我没有设置默认的Subscription。当我尝试使用Select-AzureSubscription进行设置时,出现一条错误消息,指出该订阅不存在。这就是我在Runbook中使用的内容。

'''
$conn = Get-AutomationConnection -Name 'AzureRunAsConnection'
Add-AzureRmAccount -ServicePrincipal -TenantId $conn.TenantID -ApplicationID $conn.ApplicationID -CertificateThumbprint $conn.CertificateThumbprint
Select-AzureSubscription -SubscriptionName *********
'''

确切的错误消息是:

'''
Select-AzureSubscription : The subscription name ***** doesn't exist.
Parameter name: id
At line:3 char:1
+ Select-AzureSubscription -Current -SubscriptionName "******** ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [Select-AzureSubscription], ArgumentException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.Profile.SelectAzureSubscriptionCommand
'''

要继续出现此错误,我在做什么错了?

2 个答案:

答案 0 :(得分:1)

Azure Powershell模块分为三代:“ Azure”,“ AzureRM”和“ AZ”。看起来您已经安装了多个。尝试

Select-AzureRmSubscription

相反。

答案 1 :(得分:0)

@david是正确的,您在混淆Classic(Azure)vs AzureRM命令。

如果目标是在下标中获取VM,则以下是Calssic和AzureRM的示例代码

经典

$ConnectionAssetName = "AzureClassicRunAsConnection"
$connection = Get-AutomationConnection -Name $connectionAssetName        
$Conn = Get-AutomationConnection -Name $ConnectionAssetName
$CertificateAssetName = $Conn.CertificateAssetName
$AzureCert = Get-AutomationCertificate -Name $CertificateAssetName
Set-AzureSubscription -SubscriptionName $Conn.SubscriptionName -SubscriptionId $Conn.SubscriptionID -Certificate $AzureCert 
Select-AzureSubscription -SubscriptionId $Conn.SubscriptionID
Get-AzureVM

AzureRM

$connectionName = "AzureRunAsConnection"
$servicePrincipalConnection=Get-AutomationConnection -Name $connectionName         
Add-AzureRmAccount -ServicePrincipal -TenantId $servicePrincipalConnection.TenantId -ApplicationId $servicePrincipalConnection.ApplicationId -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
Get-AzureRMVM

还请记住,连接绑定到订阅,因此对于AzureRM,您不需要select订阅。如果要select一个(Select-AzureRmSubscription),则该名称应与连接属性中的一个相同。

https://i.imgur.com/oQwY5ad.png