在 powershell 中按名称获取单个私有队列
Get a single private queue by name in powershell
我想为一个特定的私人消息队列设置权限。我找到了 this related answer,但它是一个更大的脚本,它会先删除队列(如果存在)然后(重新)创建它们。该解决方案通过以下两种方式之一获取对队列的引用:
- 通过
[System.Messaging.MessageQueue]::Create(".\private$\somequeue")
;或
- 通过循环
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachine(".")
。
我想做的是这样的:
GetPrivateQueueByName(".\private$\somequeue") # Method doesn't exist!
但是我没有找到这样的方法。我循环了 MessageQueue
命名空间中的所有 Get*
方法。
有没有办法通过名称获取单个私有队列,或者设置权限,而不必遍历所有队列and/or 重新创建它?
这将允许您向队列添加权限:
[System.Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null
(New-Object -TypeName "System.Messaging.MessageQueue" -ArgumentList $queue).SetPermissions(agrs here)
其中 $queue
是队列地址,例如".\private$\MyQueue"
.
这使用 MessageQueue
的 SetPermissions 方法。
我想为一个特定的私人消息队列设置权限。我找到了 this related answer,但它是一个更大的脚本,它会先删除队列(如果存在)然后(重新)创建它们。该解决方案通过以下两种方式之一获取对队列的引用:
- 通过
[System.Messaging.MessageQueue]::Create(".\private$\somequeue")
;或 - 通过循环
[System.Messaging.MessageQueue]::GetPrivateQueuesByMachine(".")
。
我想做的是这样的:
GetPrivateQueueByName(".\private$\somequeue") # Method doesn't exist!
但是我没有找到这样的方法。我循环了 MessageQueue
命名空间中的所有 Get*
方法。
有没有办法通过名称获取单个私有队列,或者设置权限,而不必遍历所有队列and/or 重新创建它?
这将允许您向队列添加权限:
[System.Reflection.Assembly]::LoadWithPartialName("System.Messaging") | Out-Null
(New-Object -TypeName "System.Messaging.MessageQueue" -ArgumentList $queue).SetPermissions(agrs here)
其中 $queue
是队列地址,例如".\private$\MyQueue"
.
这使用 MessageQueue
的 SetPermissions 方法。