我有一个 powershell 脚本,可以为我创建一些私有(private)队列。但是,队列默认为运行安装脚本的人所有。我更愿意让它们归一个组所有(即 - 管理员或类似的人)。有人知道怎么做吗?
foreach($strQueue in $strQueues) {
if (![System.Messaging.MessageQueue]::Exists($strQueue)) {
$q = [System.Messaging.MessageQueue]::Create($strQueue)
$q.SetPermissions($queueUser, [System.Messaging.MessageQueueAccessRights]::FullControl, [System.Messaging.AccessControlEntryType]::Set)
$q.SetPermissions("BUILTIN\Administrators", [System.Messaging.MessageQueueAccessRights]::TakeQueueOwnership, [System.Messaging.AccessControlEntryType]::Set)
Write-Host "... created $strQueue and set FullControl permissions for $queueUser"
}
}
最佳答案
我知道这是一个古老的问题并且已经得到了解答,但我今天为此苦苦挣扎了太久,不得不发布我的解决方案以减轻其他人的痛苦。
如果默认情况下您无权访问 MSMQ,那么您需要按照@Noon Silk 的建议以模拟用户身份运行命令。
此代码将允许您以不同的用户身份创建队列并为其分配权限
$Username = "Eric"
$Password = "MyPassword"
$securePass = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object Management.Automation.PSCredential($Username, $securePass)
foreach($strQueue in $strQueues) {
if (![System.Messaging.MessageQueue]::Exists($strQueue)) {
$script =
{
$q = [System.Messaging.MessageQueue]::Create($strQueue)
$q.SetPermissions($queueUser, [System.Messaging.MessageQueueAccessRights]::FullControl, [System.Messaging.AccessControlEntryType]::Set)
$q.SetPermissions("BUILTIN\Administrators", [System.Messaging.MessageQueueAccessRights]::TakeQueueOwnership, [System.Messaging.AccessControlEntryType]::Set)
Write-Host "... created $strQueue and set FullControl permissions for $queueUser"
}
Invoke-Command -Credential $credential -ScriptBlock $script
}
}
关于powershell - 如何以编程方式设置 MSMQ 队列的所有者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266914/