Powershell 导入模块WebAdministration不会从脚本加载,而是从命令行加载

Powershell 导入模块WebAdministration不会从脚本加载,而是从命令行加载,powershell,iis-7.5,web-administration,Powershell,Iis 7.5,Web Administration,我将进入一个使用PowerShell编写构建脚本的项目。构建使用WebAdministration模块来管理本地IIS实例。当我运行构建脚本时,尝试导入WebAdministration时会引发以下错误 错误:06/29/2016 17:28:35:At C:\dev\src\nib ravendb\build\ConfigureIis.ps1:10字符:1+ 导入模块WebAdministration+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ []异常:指

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

错误:06/29/2016 17:28:35:At C:\dev\src\nib ravendb\build\ConfigureIis.ps1:10字符:1+ 导入模块WebAdministration+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ []异常:指定的模块“WebAdministration”不可用 已加载,因为在任何模块中都找不到有效的模块文件 目录错误:1

然而,当我在
PowerShell
命令行上运行
Import Module WebAdministration
时,模块被导入,我可以使用其中的功能。随后运行构建脚本仍然失败

我有
iis7.5
PowerShell 4


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

对于服务器,您需要在
Web服务器(IIS)
下安装角色
管理工具
以使用
WebAdministration
模块。要查看模块是否可用,请使用
Get module-list available

对于
Windows 7
10
,您需要在
Internet信息服务
>
Web管理工具
下安装功能
IIS管理脚本和工具

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

Import-Module -Name 'C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1' 
如果
Server 2008
,您可以尝试以下操作,但这在2012年及以后的版本中可能不起作用:

Add-PSSnapin WebAdministration
注意您需要运行具有管理员权限的脚本,才能使用
导入模块
添加PSSnapin
加载
网络管理
模块

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

Set-ExecutionPolicy unrestricted

你可能想看看这个

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

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

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


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

谢谢你的回复@Richard。不幸的是,我已经安装了Web管理工具,当我列出可用的模块时,会出现WebAdministration。我甚至可以用它的外壳。就在我运行脚本时,它无法导入。有什么想法吗?@Klee我已经更新了我的问题,你可以试试。谢谢。第一个答案可能会奏效。另外两个我已经试过了。最后出现了一个问题,可能与Chocolate?有关,那就是将$env:PSModulePath截断到第一个条目,这就是为什么如果我在脚本中键入它,而不是在脚本中键入它,那么脚本可以工作的原因。我通过对$env:PSModulePath中的条目重新排序来解决这个问题,感谢您的帮助。