Powershell: как создать/управлять политикой общего доступа для очереди служебной шины

Могу создать очередь с помощью приведенного ниже кода,

$queuename = "samplequeue"
$CurrentNamespace = Get-AzureSBNamespace -Name "mynamespace"
$NamespaceManager = [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($CurrentNamespace.ConnectionString);
$QueueDescription = New-Object -TypeName Microsoft.ServiceBus.Messaging.QueueDescription -ArgumentList $queuename
$NamespaceManager.CreateQueue($QueueDescription);

Я ищу командлеты powershell для создания/управления политикой общего доступа для очереди ServiceBus.

Я могу добавить его с портала управления.

введите здесь описание изображения

Также попробовал приведенный ниже командлет,

New-AzureSBAuthorizationRule -Name "readwritepolicy" -Namespace "mynamespace"-Permission $("Send") -EntityName "notsure" -EntityType "Queue"

что дает мне следующую ошибку,

New-AzureSBAuthorizationRule : Object reference not set to an instance of an object.
At line:1 char:1
+ New-AzureSBAuthorizationRule -Name "readwritepolicy" -Namespace "mynamespace" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzureSBAuthorizationRule], NullReferenceException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceBus.NewAzureSBAuthorizationRuleCommand

Я делаю что-то не так? Что такое EntityName?


person Pradebban Raja    schedule 08.07.2015    source источник
comment
Добавление правильного имени очереди также не помогает. New-AzureSBAuthorizationRule -Name myrule -Namespace mynamespace -PrimaryKey $base64Key -Permission $(Send) -EntityName myqueue -EntityType Queue Get-AzureSBAuthorizationRule : Ссылка на объект не указывает на экземпляр объекта. В строке: 1 символ: 1 + Get-AzureSBAuthorizationRule -Namespace mynamespace -EntityName myque ... +   -  person Pradebban Raja    schedule 09.07.2015


Ответы (2)


Я знаю, что это немного устарело, но оно появилось в моих поисках и помогло мне добиться успеха, поэтому я подумал, что стоит поделиться

Я заставил его работать, добавив к приведенному ниже ответу, как показано, когда я получал ошибки с помощью командлета new-AzureSBAuthorisationRule.

$NamespaceManager.UpdateTopic($topic)

но я добавлял к теме, поэтому в этом примере это будет

$NamespaceManager.UpdateQueue($queuename)
person SQLDBAWithABeard    schedule 21.01.2016

Параметр EntityName — это имя очереди, в которую вы хотите добавить правило авторизации.

Однако я не уверен, почему командлет New-AzureSBAuthorizationRule дает сбой, когда вы пытаетесь добавить правило в очередь, но другие люди сообщают о той же проблеме. В качестве обходного пути вы можете попробовать следующее:

$queuename = "yourqueue"
$CurrentNamespace = Get-AzureSBNamespace -Name "yournamespace"
$NamespaceManager = [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($CurrentNamespace.ConnectionString);

$newkey = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::GenerateRandomKey()
[Microsoft.ServiceBus.Messaging.AccessRights[]] $accessRights  = [Microsoft.ServiceBus.Messaging.AccessRights]::Send
$AuthorizationRule = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::new("myRule",$newkey, $accessRights)

$queue = $NamespaceManager.GetQueue($queuename )
$queue.Authorization.Add($AuthorizationRule)
person Dominic Betts    schedule 09.07.2015
comment
Спасибо, однако это не решает проблему, и вопрос все же шире. - person Pradebban Raja; 09.07.2015
comment
Кажется, этот метод недоступен в классе AuthorizationRules. Не удалось вызвать метод, поскольку [Microsoft.ServiceBus.Messaging.AuthorizationRules] не содержит метод с именем «новый». - person Pradebban Raja; 09.07.2015
comment
Он работает в моей среде. Знаете ли вы, используете ли вы последнюю версию сборок ServiceBus? Кроме того, в какой строке выдается ошибка? - person Dominic Betts; 10.07.2015
comment
Строка с ошибкой: $AuthorizationRule = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::new(myRule,$newkey, $accessRights) Работаю на последних модулях Azure. Если мне нужно явно добавить какие-либо сборки. - person Pradebban Raja; 10.07.2015
comment
Хм. Я не добавлял никаких сборок явно. - person Dominic Betts; 10.07.2015