我有一個運行私有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"
異常調用 「SetPermissions」 與 「3」 的參數(一個或多個): 「無效隊列路徑名。」 在行:30字符:19個 + $ q.SetPermissions < < < <($帳戶,[System.Messaging.MessageQueueAccessRights] :: $ accessright,
+ CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException
$ account是域\用戶名格式? – 2012-04-05 08:23:00
沒想到你可以改變任何遠程私人隊列。在主動節點上運行代碼並不意味着您在集羣資源的上下文中運行它。 (http://blogs.msdn.com/b/johnbreakwell/archive/2008/02/18/clustering-msmq-applications-rule-1.aspx)。公共隊列遠程管理更好。 – 2012-04-05 12:34:57
我很樂意在本地運行它...在我的研究中,我閱讀了您的博客。我正在使用一個系統,MSMQ最終將逐步淘汰,以支持消息代理,但在此之前,我會陷入私密隊列。也就是說,我試圖自動部署大約60多個隊列和他們的權限。在這一點上,調查爲何腳本不能運行的時間比我剛剛改變它的時間要多得多,但自動化是當天的口頭禪。所以我的士兵... – JorgeSandoval 2012-04-05 18:54:55