群集私有MSMQ队列上的Setpermission

时间:2018-03-23 16:49:16

标签: powershell msmq

我正在尝试为私有群集MSMQ队列分配其他权限。

我发现How to set permissions on MSMQ Cluster queues?这是同样的问题,但我无法让它发挥作用。

该文章的关键是设置环境变量:

$env:_CLUSTER_NETWORK_NAME_ = 'myclusterMSMQ'

但是myclusterMSMQ应包含哪些内容?

在我的情况下,我有一个群集MSMQCluster,其中包含两个节点MSMQNodeAMSMQNodeB。队列位于群集资源QueueResource中。

我的逻辑是将其设置为QueueResource,但是当我这样做时,权限出现在MSMQNodeA上具有相同名称的队列中...这就是我运行我的地方powershell,它是资源所有者 - 队列不应该在这里,但在脚本测试期间,具有该名称的队列也在这里结束。

我的代码如下所示:

$queueUser= "domain\svc-account" 
$queueName=".\private$\log.queue"
$env:_CLUSTER_NETWORK_NAME_ = "$queueResource"
$queue = New-Object System.Messaging.MessageQueue $queueName
$queue.SetPermissions($queueuser, [System.Messaging.MessageQueueAccessRights]::WriteMessage)

我尝试了使用GetPrivateQueuesByMachine($queueResource)检索队列的变体 但这给了我错误:

  

System.Messaging.MessageQueueException(0x80004005):指定的   格式名称不支持请求的操作。例如,a   直接队列格式名称无法删除

我确信最后一个方法是从QueueResource返回队列,因为当我列出所有队列时,我没有得到MSMQNodeA上的任何其他垃圾队列。

如何使用Powershell在私有群集队列上设置其他队列权限?

1 个答案:

答案 0 :(得分:0)

看起来它部分不起作用,因为服务帐户已失去MSMQ管理员权限,因此测试时使用的值无关紧要。

以下是正确的语法:

$env:_CLUSTER_NETWORK_NAME_ = $QueueResource