Import-Module WebAdministration不会从脚本加载,而是从命令行加载

时间:2016-06-29 07:39:31

标签: powershell iis-7.5 web-administration

我来到一个使用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.5PowerShell 4

有没有人知道为什么导入会在脚本中失败而在命令行失败,以及如何修复它?

2 个答案:

答案 0 :(得分:11)

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

对于Windows 710,您需要在IIS Management Scripts and tools>>下安装功能Internet Information ServicesWeb 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

注意您需要运行具有管理员权限的脚本,才能使用WebAdministrationImport-Module加载Add-PSSnapin模块。

同时检查您的PowerShell执行政策是否设为Unrestricted

Set-ExecutionPolicy unrestricted

您可能希望看到此Question

答案 1 :(得分:0)

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

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

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

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