【问题标题】:Setpermission on clustered private MSMQ queue集群专用 MSMQ 队列上的设置权限
【发布时间】:2018-09-02 10:18:30
【问题描述】:

我正在尝试为私有群集 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):指定的 格式名称不支持请求的操作。例如,一个 无法删除直接队列格式名称

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

如何使用 Powershell 在私有集群队列上设置额外的队列权限?

【问题讨论】:

    标签: powershell msmq


    【解决方案1】:

    看起来它无法正常工作,部分原因是服务帐户失去了 MSMQ 管理员权限,所以我在测试时使用的值无关紧要。

    以下是正确的语法:

    $env:_CLUSTER_NETWORK_NAME_ = $QueueResource
    

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2011-06-03
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 2014-02-16
      • 2016-08-10
      • 2011-03-20
      相关资源
      最近更新 更多