gpt4 book ai didi

azure - SB 队列的 PowerShell New-AzureSBAuthorizationRule 返回“对象未设置为对象的实例”

转载 作者:行者123 更新时间:2023-12-01 05:05:19 24 4
gpt4 key购买 nike

我可以使用 PowerShell 在 SB 命名空间上成功创建共享访问策略:

New-AzureSBAuthorizationRule -Name "MyEHListenRule" -Namespace $AzureSBNameSpace -Permission Listen

但是,当尝试根据此 MSDN article 在 SB 队列上设置共享访问策略时使用:

New-AzureSBAuthorizationRule -Name "Manage" -Namespace $AzureSBNameSpace -Permission $("Manage", "Listen", "Send") -EntityName $QName -EntityType Queue

地点:

[string]$AzureSBNameSpace = ronboksbeh 
[string]$QName =ronbokq0

PowerShell 返回:

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

另外还有一个之前的question关于此 cmdlet 无法工作的问题早在 2014 年 12 月就已经发生过,而且这个问题仍然没有得到解答。

我仍在努力解决这个问题,因此,如果有人曾经让这个 cmdlet 工作并且能够阐明我们可能做错的事情,我们将不胜感激。

最佳答案

我遇到了同样的错误并使用它,以便我可以选择要添加的权限

            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)
}

您可以通过将主题替换为队列来更改代码以设置队列权限:-)

关于azure - SB 队列的 PowerShell New-AzureSBAuthorizationRule 返回“对象未设置为对象的实例”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29517249/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com