私は機能しているプライベートMSMQ 3.0キューを持つクラスタを持っています。プログラムでアクセス許可を設定しようとしていますが、キュー上でSystem.Messaging経由で接続できないようです。以下のコードは、ローカルキューを扱う場合(そしてローカルキューの場合は\ nomenclatureを使用する場合)にうまく動作します。プログラムによってクラスター化されたキューのアクセス許可を設定する方法アクティブノードから実行MSMQクラスターキューのアクセス許可を設定する方法?
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 < < < <($アカウント、[System.Messaging.MessageQueueAccessRights] :: $のaccessright、
+ CategoryInfo:NotSpecified:(:) []、MethodInvocationException + FullyQualifiedErrorId:
$ accountはドメイン\ユーザー名形式ですか? –
リモートのプライベートキューで何かを変更できるとは思われませんでした。アクティブノードでコードを実行しても、クラスタ化されたリソースのコンテキストで実行されているわけではありません。 (http://blogs.msdn.com/b/johnbreakwell/archive/2008/02/18/clustering-msmq-applications-rule-1.aspx)。パブリックキューは、リモート管理の方がはるかに優れています。 –
私はそれをローカルで実行して嬉しいです...私はこれに関する私の研究中にあなたのブログを読んでいます。私は、MSMQが最終的にメッセージブローカーに有利になる段階で廃止されるシステムで作業していますが、それまでは私的なキューが残っています。つまり、私は約60以上のキューとそれらのアクセス許可の展開を自動化しようとしています。現時点では、なぜ私はそれを変更したばかりのスクリプトが動作しないのかを調べるのにもっと時間が掛かっていましたが、自動化はその日のマントラです。だから私は兵士をしています。 – JorgeSandoval