特定的PowerShell模块不自动加载

kar*_*d44 5 iis powershell iis-7.5 web-administration powershell-4.0

我在Windows Server 2012 R2上使用PowerShell 4.

调用来自此模块的Cmdlet时,特定模块WebAdministration不会自动加载.我试过的所有其他模块成功自动加载.我可以使用Import-Module手动加载此模块,它的行为符合预期.

  • PSModulePath环境变量包含模块的路径.此路径中的其他模块自动加载.
  • 该模块不是自定义的.它是一个内置的IIS功能.该功能已启用.
  • 自动加载已启用.$ PSModuleAutoLoadingPreference设置为"All"
  • Get-Command"Get-WebBinding"不起作用,但是Get-Command | 其中{$ _.Name -eq"Get-WebBinding"}的确如此.
  • Get-Module -ListAvailable | 其中{$ _.Name -eq"WebAdministration"}返回具有正确路径的模块.

PSModulePath =%SystemRoot%\ system32\WindowsPowerShell\v1.0\Modules \ WebAdministration Module Path = C:\ Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration



简单测试输出


PS C:\ Users\Administrator> $ PSModuleAutoLoadingPreference ="All"

PS C:\ Users\Administrator> Get-WebBinding Get-WebBinding:术语"Get-WebBinding"未被识别为cmdlet,函数,脚本文件或可操作程序的名称.检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试.at line:1 char:1 + Get-WebBinding + ~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound:(Get-WebBinding:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

PS C:\ Users\Administrator> Import-Module WebAdministration

PS C:\ Users\Administrator> Get-WebBinding

protocol bindingInformation sslFlags -------- ------------------ -------- http*:8082:0 http*:8081:0




任何关于为什么自动加载不起作用的建议将不胜感激.谢谢!

Ben*_*est 0

尝试重新安装该模块,看看是否有影响。

如果这不起作用,虽然自动加载不起作用很烦人,但您可以在使用之前导入模块并期望它能够工作。

Import-Module WebAdministration
Get-WebBinding
Run Code Online (Sandbox Code Playgroud)

或者,如果您需要单行:

Import-Module WebAdministration; Get-WebBinding
Run Code Online (Sandbox Code Playgroud)

我能找到的关于为什么这可能不起作用的唯一真正线索是使用提供者的模块可能不会自动加载WebAdministration提供IIS:PSDrive。然而,正如我在之前的评论中指出的那样,我能够WebAdministration在安装了 PS 5.1 的 WS 2016 上自动加载该模块,这与此声明相悖。我的假设是这个限制可能与 PS 5.1+ 无关,但我不能肯定地说,因为我没有 PS 4.0 环境可供测试。