【问题标题】:Import-Module WebAdministration wont load from script but does from command lineImport-Module WebAdministration 不会从脚本加载,而是从命令行加载
【发布时间】:2016-06-29 07:39:30
【问题描述】:

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

错误:2016 年 6 月 29 日 17:28:35:在 C:\dev\src\nib-ravendb\build\ConfigureIis.ps1:10 char:1 + Import-Module WebAdministration + ~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~ [>] 异常:指定的模块“WebAdministration”不是 加载,因为在任何模块中都找不到有效的模块文件 目录。错误:1

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

我有IIS 7.5PowerShell 4

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

【问题讨论】:

    标签: powershell iis-7.5 web-administration


    【解决方案1】:

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

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

    注意您需要以管理员权限运行脚本才能使用Import-ModuleAdd-PSSnapin 加载WebAdministration 模块。

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

    Set-ExecutionPolicy unrestricted
    

    您可能希望看到这个Question

    【讨论】:

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

    我有同样的情况,我已经修复了它在 W2016 服务器上安装 Windows Feature Web-Scripting-Tools:

    Add-WindowsFeature Web-Scripting-Tools
    

    【讨论】:

    • 这应该是公认的答案
    【解决方案3】:

    最后有一个问题,可能是巧克力味的?,将$env:PSModulePath 截断为第一个条目,这就是为什么如果我输入脚本但在脚本中没有工作,脚本可以正常工作。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多