群集的私有MSMQ队列上的setpermission



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

我找到了如何在MSMQ群集队列上设置权限?这是同一问题,但我无法正常工作。

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

$env:_CLUSTER_NETWORK_NAME_ = 'myclusterMSMQ'

但是myclusterMSMQ应该包含什么?

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

对我来说逻辑是将其设置为QueueResource,但是当我这样做时,权限出现在MSMQNodeA上的同名队列上...这是我运行我的PowerShell的地方,它是资源所有者 - 队列不应该在这里,而应该在脚本测试中,以该名称最终出现在这里。

我的代码看起来像这样:

$queueUser= "domainsvc-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(:指定 格式名称不支持请求的操作。例如, 直接队列格式名称无法删除

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

如何在powershell的私人聚类队列上设置其他队列权限?

看起来它不起作用,因为该服务帐户丢失了MSMQ Admin Permissions,因此测试时使用了什么值并不重要。

以下是正确的语法:

$env:_CLUSTER_NETWORK_NAME_ = $QueueResource

最新更新