【问题标题】:Subscription doesn't exists when using Set-AzureSubscription使用 Set-AzureSubscription 时订阅不存在
【发布时间】:2020-01-08 18:16:02
【问题描述】:

我正在尝试针对 Azure 订阅中的所有 VM 运行 powershell 脚本。我使用 AzureRunAsConnection 连接到服务主体。使用 Get-AzureVM 会出现我没有设置默认订阅的错误。当我尝试使用 Select-AzureSubscription 设置它时,我收到一条错误消息,指出订阅不存在。这是我在运行手册中使用的内容。

'''
$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
'''

我做错了什么才不断收到这个错误?

【问题讨论】:

    标签: azure powershell


    【解决方案1】:

    @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)它应该和连接属性中的那个一样。

    【讨论】:

    • 感谢您的澄清。你们是对的。我对这些命令感到困惑。
    【解决方案2】:

    共有三代 Azure powershell 模块,“Azure”、“AzureRM”和“AZ”。看起来你已经安装了多个。试试

    Select-AzureRmSubscription
    

    改为。

    【讨论】:

      猜你喜欢
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 2020-10-06
      • 2019-01-03
      • 1970-01-01
      相关资源
      最近更新 更多