【发布时间】:2019-10-31 17:47:54
【问题描述】:
我有一个 2 节点集群,在 Windows Server 2012R2 上安装了 PowerShell 4.0 版。集群中的角色之一是“Messaging Queuing”,名为“TESTMSMQ”,它安装了大约 20 个私有队列。
在新的 PowerShell 控制台中,我使用命令将环境变量 _CLUSTER_NETWORK_NAME_ 设置为“TESTMSMQ”
$env:_CLUSTER_NETWORK_NAME_='TESTMSMQ'
当我运行 Get-MsmqQueue -Name * 时,我什么也得不到。但是如果我运行 compmgmt.msc 我可以看到所有列出的队列,如果我将 System.Messaging 程序集加载到 PowerShell 会话中,我可以看到这些队列。
[System.Reflection.Assembly]::LoadWithPartialName("System.Messaging")
[System.Messaging.MessageQueue]::Exists('.\private$\MyTestQueue')
返回真
是否有人知道为什么 MSMQ cmdlet 找不到队列,但 .net 程序集可以,并且计算机管理管理单元也能看到队列?
需要明确的是,本地节点或物理节点上没有定义队列。 “private$\MyTestQueue”仅在 MSMQ 安装角色“TESTMSMQ”上定义。
所以,如果 Exists() 使用 localhost 名称返回 True,那么我会假设环境是 MSMQ 角色,而不是物理节点。
【问题讨论】:
标签: powershell cluster-computing msmq