通过Powershell检索Azure Service Bus共享访问连接字符串

时间:2017-01-23 15:03:17

标签: powershell azure azureservicebus

可以使用Powershell中的Get-AzureRmStorageAccountKey检索Azure存储帐户的访问密钥。如何获取Azure Service Bus的共享访问策略的访问密钥?

更多澄清

这是我使用Get-AzureRmServiceBusNamespaceKey cmdlet时得到的结果:

PS C:\Windows\system32> Login-AzureRmAccount -Credential $cred

Environment           : AzureCloud
Account               : ***redacted***
TenantId              : ***redacted***
SubscriptionId        : ***redacted***
CurrentStorageAccount : 

PS C:\Windows\system32> Set-AzureRmContext -SubscriptionId ***redacted***

Environment           : AzureCloud
Account               : ***redacted***
TenantId              : ***redacted***
SubscriptionId        : ***redacted***
CurrentStorageAccount : 


PS C:\Windows\system32> Get-AzureRmServiceBusNamespaceKey -ResourceGroup testresourcegroup -Name test-bus -AuthorizationRuleName SendPolicy
Get-AzureRmServiceBusNamespaceKey : Run Login-AzureRmAccount to login.
At line:1 char:1
+ Get-AzureRmServiceBusNamespaceKey -ResourceGroup testresourcegroup -Name    test-bus ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [Get-AzureRmServiceBusNamespaceKey], PSInvalidOperationException
+ FullyQualifiedErrorId :   InvalidOperation,Microsoft.Azure.Commands.ServiceBus.Commands.Namespace.GetAzure RmServiceBusNamespaceKey


PS C:\Windows\system32> Get-AzureRmStorageAccountKey -ResourceGroupName testresourcegroup -Name teststoragexxx

Key1                                                                                                        Key2                                                                                                   
----                                                                                                    ----                                                                                                   
***redacted***                ***redacted***

2 个答案:

答案 0 :(得分:3)

不使用 Get-AzureRmStorageAccountKey ,但您可以使用 Get-AzureRmServiceBusNamespaceKey

  

$ resourceGroup =" myResourceGroup"
  $ serviceBusName =" myservicebusname"
  $ policyName =" policyname"

     

Get-AzureRmServiceBusNamespaceKey -ResourceGroup $ resourceGroup -Name   $ serviceBusName -AuthorizationRuleName $ policyName

这将返回整个对象,因此您可以将其传递给变量并从中获取键或连接字符串。

答案 1 :(得分:1)

请尝试使用tenantId和ServicePrincipal登录。我做了一个关于它的演示测试,它对我来说是正常的。

Login-AzureRmAccount -Credential $psCred  -TenantId $azureTenantId  -ServicePrincipal -SubscriptionId $subscriptionId 

以下是详细步骤。

1。如果不安装,我们需要安装服务总线模块。有关AzureRM.ServiceBus的更多详细信息,请参阅document

Install-Module -Name AzureRM.ServiceBus 

2.更多有关自动登录脚本的详细信息,请参阅另一个SO thread

3.运行测试脚本并检查结果。

$azureAplicationId ="Azure AD Application Id"
$azureTenantId= "Your Tenant Id"
$azurePassword = ConvertTo-SecureString "strong password" -AsPlainText -Force
$subscriptionId="Your subcription"
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId , $azurePassword)
Login-AzureRmAccount -Credential $psCred  -TenantId $azureTenantId  -ServicePrincipal -SubscriptionId $subscriptionId 


$resourceGroup = "Resource Group name"
$serviceBusName ="Service Bus Name"
$policyName = "Policy Name"
Get-AzureRmServiceBusNamespaceKey  -ResourceGroup $resourceGroup -Name $serviceBusName -AuthorizationRuleName $policyName

enter image description here