我有一个在 Windows 10 上创建 MSMQ 队列的脚本,一切正常。然而在 Windows 11 上(具体来说是专业版和家庭版),它失败了。
由于找不到
New-MsmqQueue
而开始失败:
The term 'New-MsmqQueue' is not recognized as the name of a cmdlet, function, script file,
or operable program.
我尝试
Import-Module MSMQ
并且它几乎(几乎,据我们所知,产生了巨大的差异)解决了一个问题。
我说几乎因为
Import-Module MSMQ
也失败了:
The module manifest cannot contain both the 'ModuleToProcess' and 'RootModule' members.
Change the module manifest file to remove one of these members at
'C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MSMQ\MSMQ.psd1',
and then try again.
我查看了上述文件,是的,事实上,它包含
ModuleToProcess
和 RootModule
但首先我不应该编辑系统文件,其次......我无法编辑它们。
我创建了该模块的副本并“实验性”修改了它(通过删除
RootModule
),它似乎工作正常,但这不是解决方案。
注意:我在“全新”安装上运行此程序(
Win11_22H2_EnglishInternational_x64v2.iso
)
注意:我尝试了 (Windows) PowerShell 5 和新的 (Core) PowerShell 7。
注意:MsMQ Windows 功能已完全安装(所有框均已勾选)
有人看过这个吗?我是不是错过了什么?
编辑:Windows 10 没有此问题,并且没有
RootModule
是 .psd1
文件。正如 RootModule
引用 MSMQ.psm1
我检查了它,它似乎正在处理 Intel/ARM 差异,我认为这不是 Windows 10 中的情况。
这是 Windows 11 中的已知问题,将在更新中解决。
同时作为解决方法:
备份并以管理员身份打开 MSMQ.psd1 (C:\Windows\system32\WindowsPowerShell 1.0\Modules\MSMQ)。
将 MSMQ.psd1 中的 ModuleToProcess 更改为 NestedModules
保存
导入模块 MSMQ