导入模块 Web 管理不会从脚本加载,而是从命令行加载



我即将进入一个使用PowerShell来编写构建脚本的项目。 该版本使用WebAdministration模块来管理本地 IIS 实例。 当我运行构建脚本时,尝试导入WebAdministration时会引发以下错误。

错误: 06/29/2016 17:28:35: 在 C:\dev\srcib-ravendb\build\ConfigureIis.ps1:10 char:1 + 导入模块 Web 管理 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>]例外:指定的模块"WebAdministration"不是 已加载,因为任何模块中都没有有效的模块文件 目录。错误:1

当我在PowerShell命令行运行Import-Module WebAdministration时,模块是如何导入的,我可以使用其中的功能。随后运行生成脚本仍然失败。

我有IIS 7.5PowerShell 4

有没有人知道为什么此导入在脚本中失败而不是在命令行中失败,以及如何解决它?

对于服务器,您需要在Web Server (IIS)下安装角色Management Tools才能使用WebAdministration模块。要查看是否有可用的模块,请使用Get-Module -ListAvailable

Windows 710,您需要在Internet Information Services>>Web Management Tools下安装该功能IIS Management Scripts and tools

您可以尝试手动查找WebAdministration.psd1 文件,然后将其导入。使用$env:psmodulepath帮助查找模块的存储位置,然后运行:

Import-Module -Name 'C:WindowsSystem32WindowsPowerShellv1.0ModulesWebAdministrationWebAdministration.psd1' 

如果Server 2008,您可以尝试以下方法,但这在 2012 及更高版本上可能不起作用:

Add-PSSnapin WebAdministration

注意:您需要以管理员权限运行脚本,以便能够加载具有Import-ModuleAdd-PSSnapinWebAdministration模块。

还要检查是否已将PowerShell的执行策略设置为Unrestricted

Set-ExecutionPolicy unrestricted

您可能希望看到此问题。

我遇到了同样的情况,我已经修复了在W2016服务器上安装Windows功能Web脚本工具的问题:

Add-WindowsFeature Web-Scripting-Tools

最后有一个问题,可能是巧克力味?,被截断$env:PSModulePath到第一个条目,这就是为什么如果我输入它而不是在脚本中,脚本可以工作的原因。

我通过在我正在运行的脚本的不同点记录$env:PSModulePath来找到它。

我通过重新排序$env:PSModulePath中的条目来解决这个问题。

看看@Richard的回答,了解其他一些好的建议。

就我而言(Windows 10),我使用的是Powershell 7,它只是拒绝安装WebAdministration模块,尽管它存在于Windows功能中。

使用以前版本的PS:例如,Developer PowerShell for VS工作。

最新更新