我即将进入一个使用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.5
和PowerShell 4
有没有人知道为什么此导入在脚本中失败而不是在命令行中失败,以及如何解决它?
对于服务器,您需要在Web Server (IIS)
下安装角色Management Tools
才能使用WebAdministration
模块。要查看是否有可用的模块,请使用Get-Module -ListAvailable
。
要Windows 7
10
,您需要在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-Module
或Add-PSSnapin
的WebAdministration
模块。
还要检查是否已将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工作。