Import-Module WebAdministration 不会从脚本加载,而是从命令行加载
Import-Module WebAdministration wont load from script but does from command line
我正在着手一个使用 PowerShell
编写构建脚本的项目。该构建使用 WebAdministration
模块来管理本地 IIS 实例。当我 运行 构建脚本时,在尝试导入 WebAdministration
时抛出以下错误。
Error: 06/29/2016 17:28:35: At
C:\dev\src\nib-ravendb\build\ConfigureIis.ps1:10 char:1 +
Import-Module WebAdministration + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
[<<==>>] Exception: The specified module 'WebAdministration' was not
loaded because no valid module file was fo und in any module
directory. ERROR: 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:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1'
如果 Server 2008
您可以尝试以下方法,但这可能不适用于 2012 年及以后的版本:
Add-PSSnapin WebAdministration
注意您需要运行具有管理员权限的脚本才能使用Import-Module
或[加载WebAdministration
模块=27=]。
同时检查您是否将 PowerShell
的执行策略设置为 Unrestricted
:
Set-ExecutionPolicy unrestricted
您可能想看看这个 Question。
最后有一个问题,可能是巧克力?,截断 $env:PSModulePath
到第一个条目,这就是为什么如果我输入它而不是在脚本中输入它,脚本可以工作的原因。
我通过在脚本的不同点记录 $env:PSModulePath
找到它,我是 运行。
我通过重新排序 $env:PSModulePath
中的条目来解决这个问题。
查看@Richard 的回答以获得其他一些好的建议。
我遇到了同样的情况,我已经通过在 W2016 服务器上安装 Windows Feature Web-Scripting-Tools 来修复它:
Add-WindowsFeature Web-Scripting-Tools
就我而言 (Windows 10),我使用的是 Powershell 7,这只是拒绝安装 WebAdministration 模块,尽管它存在于 Windows 功能中。
使用以前版本的PS:例如VS 的开发者 PowerShell 成功了。
我正在着手一个使用 PowerShell
编写构建脚本的项目。该构建使用 WebAdministration
模块来管理本地 IIS 实例。当我 运行 构建脚本时,在尝试导入 WebAdministration
时抛出以下错误。
Error: 06/29/2016 17:28:35: At C:\dev\src\nib-ravendb\build\ConfigureIis.ps1:10 char:1 + Import-Module WebAdministration + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ [<<==>>] Exception: The specified module 'WebAdministration' was not loaded because no valid module file was fo und in any module directory. ERROR: 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:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration\WebAdministration.psd1'
如果 Server 2008
您可以尝试以下方法,但这可能不适用于 2012 年及以后的版本:
Add-PSSnapin WebAdministration
注意您需要运行具有管理员权限的脚本才能使用Import-Module
或[加载WebAdministration
模块=27=]。
同时检查您是否将 PowerShell
的执行策略设置为 Unrestricted
:
Set-ExecutionPolicy unrestricted
您可能想看看这个 Question。
最后有一个问题,可能是巧克力?,截断 $env:PSModulePath
到第一个条目,这就是为什么如果我输入它而不是在脚本中输入它,脚本可以工作的原因。
我通过在脚本的不同点记录 $env:PSModulePath
找到它,我是 运行。
我通过重新排序 $env:PSModulePath
中的条目来解决这个问题。
查看@Richard 的回答以获得其他一些好的建议。
我遇到了同样的情况,我已经通过在 W2016 服务器上安装 Windows Feature Web-Scripting-Tools 来修复它:
Add-WindowsFeature Web-Scripting-Tools
就我而言 (Windows 10),我使用的是 Powershell 7,这只是拒绝安装 WebAdministration 模块,尽管它存在于 Windows 功能中。
使用以前版本的PS:例如VS 的开发者 PowerShell 成功了。