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" を呼び出し中に例外が発生しました: "無効なキュー パス名"。行:30 文字: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 に答える