在 powershell 中按名称获取单个私有队列

Get a single private queue by name in powershell

我想为一个特定的私人消息队列设置权限。我找到了 this related answer,但它是一个更大的脚本,它会先删除队列(如果存在)然后(重新)创建它们。该解决方案通过以下两种方式之一获取对队列的引用:

  1. 通过[System.Messaging.MessageQueue]::Create(".\private$\somequeue");或
  2. 通过循环 [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".

这使用 MessageQueueSetPermissions 方法。