Powershell 新建AzureSBAuthorizationRule为服务总线队列创建授权时出错
我使用New AzureSBAuthorizationRule为Azure服务总线队列创建新的共享访问策略。请参阅下面的命令Powershell 新建AzureSBAuthorizationRule为服务总线队列创建授权时出错,powershell,azure,azureservicebus,azure-powershell,azure-servicebus-queues,Powershell,Azure,Azureservicebus,Azure Powershell,Azure Servicebus Queues,我使用New AzureSBAuthorizationRule为Azure服务总线队列创建新的共享访问策略。请参阅下面的命令 New-AzureSBAuthorizationRule -EntityName abcdef -EntityType Queue -Permission Listen -Name "abcdef_reader" -Namespace abcdefnamespace 但每次运行此命令时,都会出现以下错误: New-AzureSBAuthorizationRule :
New-AzureSBAuthorizationRule -EntityName abcdef -EntityType Queue -Permission Listen -Name "abcdef_reader" -Namespace abcdefnamespace
但每次运行此命令时,都会出现以下错误:
New-AzureSBAuthorizationRule : Object reference not set to an instance of an object.
At line:1 char:1
+ New-AzureSBAuthorizationRule -EntityName abcdef -EntityType Queue -Permission ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : CloseError: (:) [New-AzureSBAuthorizationRule], NullReferenceException
+ FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceBus.NewAzureSBAuthorizationRuleCommand
如果我删除EntityName和EntityType,即为服务总线而不是队列创建策略,我就能够运行新的AzureSBAuthorizationRule而不会出现问题
我做错了什么?是否有可能在-Permission参数周围缺少一些语法?以下是MSDN上给出的PS命令行示例: C:\PS>New AzureSBAuthorizationRule-Name MyRule-Namespace MyNamespace-Permission$(“管理”、“侦听”、“发送”)-EntityName MyEntity-EntityType队列-PrimaryKey p+lL/MND2Z9SJ5HWMRYAXQDDX8RHFBDQU2EAQS1RC= 看起来您的参数应该是-Permission$(“Listen”) 如果有帮助,请告诉我们 问候,, 塞思·曼海姆
Azure文档团队我得到了相同的错误并使用了
function Create-AzureSBAuthorisationTopic
{
param
([Parameter (Mandatory = $true)]
[string] $Namespace,
[Parameter (Mandatory = $true)]
[string] $TopicName,
[Parameter (Mandatory = $true)]
[string]$RuleName,
[switch]$CanManage,
[switch]$CanListen,
[switch]$CanSend
)
$NamespaceManager = [Microsoft.ServiceBus.NamespaceManager]::CreateFromConnectionString($CurrentNamespace.ConnectionString);
$newkey = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::GenerateRandomKey()
#Strongly Typed Array
[Microsoft.ServiceBus.Messaging.AccessRights[]]$AccessRights =
New-Object -TypeName "System.Collections.Generic.List[Microsoft.ServiceBus.Messaging.AccessRights]" ;
if ($CanManage)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Manage;
}
if ($CanListen)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Listen;
}
if ($CanSend)
{
$AccessRights += [Microsoft.ServiceBus.Messaging.AccessRights]::Send;
}
$AuthorizationRule = [Microsoft.ServiceBus.Messaging.SharedAccessAuthorizationRule]::new($RuleName,$newkey, $accessRights)
$AuthorizationRule
$topic = $NamespaceManager.GetTopic($TopicName)
$topic.Authorization.Add($AuthorizationRule)
$NamespaceManager.UpdateTopic($topic)
}
您可以通过将topic替换为queue:-)来更改代码以设置队列权限。我以前确实尝试过,但我重新验证了,它仍然不起作用。我在以前的调用中没有包含PrimaryKey,但是当我这样做的时候,我仍然得到了相同的消息。这将在名称空间而不是队列级别创建策略