我正在尝试对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
'''
要继续出现此错误,我在做什么错了?
答案 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
),则该名称应与连接属性中的一个相同。