我来到一个使用PowerShell
编写脚本的项目。构建使用WebAdministration
模块来管理本地IIS实例。当我运行构建脚本时,尝试导入WebAdministration
时会引发以下错误。
错误:06/29/2016 17:28:35:在 C:\ dev \ src \ nib-ravendb \ build \ ConfigureIis.ps1:10 char:1 + 导入模块Web管理+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<< ==>>]例外:指定的模块' WebAdministration'不是 已加载,因为在任何模块中都没有有效的模块文件 目录。错误:1
当我在Import-Module WebAdministration
命令行运行PowerShell
模块导入时,我可以使用它的功能。随后运行构建脚本仍然失败。
我有IIS 7.5
和PowerShell 4
有没有人知道为什么导入会在脚本中失败而在命令行失败,以及如何修复它?
答案 0 :(得分:11)
对于服务器,您需要在Management Tools
下安装角色Web Server (IIS)
才能使用WebAdministration
模块。要查看您是否有可用模块,请使用Get-Module -ListAvailable
。
对于Windows 7
到10
,您需要在IIS Management Scripts and tools
>>下安装功能Internet Information Services
。 Web Management Tools
。
您可以尝试手动找到WebAdministration
.psd1文件,然后导入它。使用$env:psmodulepath
帮助找到存储模块的位置,然后运行:
Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1'
如果Server 2008
您可以尝试以下操作,但这可能不适用于2012及以上版本:
Add-PSSnapin WebAdministration
注意您需要运行具有管理员权限的脚本,才能使用WebAdministration
或Import-Module
加载Add-PSSnapin
模块。
同时检查您的PowerShell
执行政策是否设为Unrestricted
:
Set-ExecutionPolicy unrestricted
您可能希望看到此Question。
答案 1 :(得分:0)
最后有一个问题,可能是巧克力?是将$env:PSModulePath
截断到第一个条目,这就是为什么如果我输入脚本而不是脚本中脚本工作的原因。
我通过在我运行的脚本中的不同点记录$env:PSModulePath
来找到它。
我通过重新排序$env:PSModulePath
中的条目来解决这个问题。
看看@ Richard的答案,了解其他一些好的建议。