是什么导致web管理模块cmdlet与自己的名称冲突?

时间:2012-02-02 18:11:53

标签: powershell powershell-v2.0 powergui

我正在运行Win7 Enterprise。

我的目标是使用带有Powershell 2.0和PowerGUI的webadministration Powershell模块。

模块正常工作,但下次启动PowerGUI时会出错。

以下是重现问题的步骤:

1)打开PowerGUI 3.1.0.2058。

2)为IIS安装“webadministration”模块。

我可以使用PowerGUI中的Import-Module cmdlet或“File> Powershell Libraries”菜单项执行此操作。

没关系。无论如何,我得到了相同的结果。

3)网络管理模块按预期工作。

4)退出PowerGUI。

5)打开PowerGUI。

我得到一长串错误消息,似乎表明网络管理导致了与自身的名称冲突。

示例:

Import-Module:术语'Microsoft.IIS.PowerShell.Provider \ Start-WebCommitDelay'解析为不明确的cmdlet名称。可能的匹配包括:Microsoft.IIS.PowerShell.Provider \ St art-WebCommitDelay Microsoft.IIS.PowerShell.Provider \ Start-WebCommitDelay。 在行:1 char:288 + @('C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ webadministration \ Microsoft.IIS.PowerShell.Provider.dll','C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ webadministration \ webadm inistration.psd1')| Where-Object {@(Get-Module |%{$ .Path}) - notcontains $ } | %{Import-Module<<<< $ _}     + CategoryInfo:ObjectNotFound:(Microsoft.IIS.P ...- WebCommitDelay:String)[Import-Module],ParentContainsErrorRecordException     + FullyQualifiedErrorId:CmdletNameAmbiguous,Microsoft.PowerShell.Commands.ImportModuleCommand

如果我在退出PowerGUI之前使用Remove-Module卸载webadministration,下次启动PowerGUI时,我不会收到错误消息。

是否有规则在退出PowerGUI之前必须卸载模块?

我尝试过与Microsoft的ISE相同的一组步骤(不要使用Remove-Module),我没有遇到任何问题。

PowerGUI在哪里记得导入?我认为Import-Module只是每个Powershell sesssion。

请赐教。

谢谢!

Adam Leffert http://www.leffert.com

2 个答案:

答案 0 :(得分:0)

要检查的一些事项:

PowerGUI文件菜单中的配置文件脚本,当前用户和所有用户。

转到文件/ PowerShell库并确保它没有在那里签到。

同样在Tools / Options / Debug选项下,选择重置PowerShell运行空间并取消选中加载配置文件。

答案 1 :(得分:0)

两个配置文件都是空的。

我按照你的描述设置了Debug选项。

如果我只使用“文件> Powershell库”菜单并且不使用命令行导入模块,则PowerGui仍然无法与web管理模块一起正常工作。

步骤:

1)打开PowerGui(PG)。

2)检查PS Libraries对话框中的“webadministration 1.0.0”模块。

单击“确定”关闭对话框。

webadministration模块已加载并正常运行。

3)退出PG。

4)再次打开PG。

一切看起来都很好(但事实并非如此)。

5)退出PG。

6)再次打开PG。

PG无法导入模块并抛出错误。

如果您在第4步和第5步之间查看“文件> Powershell库”对话框,这种失败是有道理的。

执行此操作时,您会看到虽然您只检查了“webadministration”模块,但当您查看步骤4和5之间的此对话框时,您将看到此模块和

“Microsoft.IIS.Powershell.Provider”模块都已经过检查。

要解决此问题,您可以在步骤2中检查“Microsoft.IIS.Powershell.Provider”而不是“webadministration”。

如果这样做,PG正常工作。

非常感谢让我走上正确的道路。

我有点好奇为什么“webadministration”不起作用,但我当然可以使用正常工作的模块。