1

我有一个具有正常运行的私有 MSMQ 3.0 队列的集群。我正在尝试以编程方式设置权限,但似乎无法通过队列上的 System.Messaging 进行连接。下面的代码在使用本地队列(并使用 .\ 本地队列的命名法)时工作得很好。如何以编程方式设置集群队列的权限?

从活动节点执行的 Powershell 代码

function set-msmqpermission ([string] $queuepath,[string] $account, [string] $accessright)
{
    if (!([System.Messaging.MessageQueue]::Exists($queuepath))){
    throw "$queuepath could not be found."
}
$q=New-Object System.Messaging.MessageQueue($queuepath)
$q.SetPermissions($account,[System.Messaging.MessageQueueAccessRights]::$accessright,            
  [System.Messaging.AccessControlEntryType]::Set)
}
set-msmqpermission "clusternetworkname\private$\qa1ack" "UserAccount" "FullControl"

使用“3”参数调用“SetPermissions”的异常:“无效的队列路径名”。在 line:30 char:19 + $q.SetPermissions <<<< ($account,[System.Messaging.MessageQueueAccessRights]::$accessright,
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException

4

1 回答 1

3

来自:http ://winterdom.com/2011/10/using-powershell-with-clustered-msmq

在使用 messageQueue 之前,您必须设置集群网络名称环境变量。

$env:_CLUSTER_NETWORK_NAME_ = 'myclusterMSMQ'
[System.Messaging.MessageQueue]::Create('.\Private$\MyQueue')

将集群网络名称添加到脚本顶部应该可以解决问题

链接到我作为另一个问题的答案提供的完整(简单化 - 但适用于简单创建和分配烫发)脚本。 https://stackoverflow.com/a/11268755/761599

于 2012-06-29T21:12:37.357 回答