gpt4 book ai didi

powershell - 如何以编程方式设置 MSMQ 队列的所有者?

转载 作者:行者123 更新时间:2023-12-01 11:09:48 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com