【问题标题】:Installing PowerShell module persistently for all users为所有用户持久安装 PowerShell 模块
【发布时间】:2014-01-02 14:45:26
【问题描述】:

我正在通过 Octopus Deploy 将 PowerShell 模块安装到多个不同的服务器上。出于测试目的,我参考了 Microsoft 的 installing PowerShell Modules 文档的指导。

这很好,但正如文档所述,我的更改仅在当前会话中可见。也就是说,如果我要执行以下操作:

$modulePath = [Environment]::GetEnvironmentVariable("PSModulePath", [EnvironmentVariableTarget]::Machine)
# More practically, this would be some logic to install only if not present
$modulePath += ";C:\CustomModules"
[Environment]::SetEnvironmentVariable("PSModulePath", $modulePath, [EnvironmentVariableTarget]::Machine)

在 tentacle 服务器上自动运行此安装程序时,未来的 PowerShell 会话似乎看不到新安装的模块。

如何以与配置文件无关的方式安装 PowerShell 模块,以便启动的每个 PowerShell 会话都能看到它?

【问题讨论】:

    标签: powershell module powershell-module


    【解决方案1】:

    PowerShell 只能“查看”安装在$env:PSModulePath 中列出的目录之一中的模块。否则,您必须使用完整路径导入模块。

    要使新模块对所有用户可见,您基本上有两种选择:

    1. 将模块安装到默认的系统范围模块目录 (C:\Windows\system32\WindowsPowerShell\v1.0\Modules)。
    2. 修改系统环境,使PSModulePath 变量已经包含您的自定义模块目录(例如,通过group policy preference)。

    不过,后者只会对修改后启动的 PowerShell 会话生效。

    【讨论】:

    • PowerShell 3.0 及更高版本会自动加载它可以使用上述方法找到的模块。因此无需手动导入模块或将它们导入配置文件中。
    • 您宁愿使用第二个选项,因为msdn.microsoft.com/en-us/library/dd878350(v=vs.85).aspx 建议不要在 C:\Windows\system32\WindowsPowerShell\v1.0\Modules 中安装用户的模块随 Windows 提供。不要将模块安装到此位置。"
    【解决方案2】:

    此配置文件适用于所有用户和所有 shell。

    %windir%\system32\WindowsPowerShell\v1.0\profile.ps1
    

    【讨论】:

    • 文章链接中的配置文件仅适用于“每个用户”,上面的配置文件是机器范围的。
    • 我可以保证它会运行,即使 shell 是用-NoProfile 打开的?
    • 恐怕我做不到。我必须假设模块将在-NoProfile 环境中加载。
    【解决方案3】:

    按照您在问题中说明的步骤(我认为这是一般方法)后,我找到了两种方法来让 Powershell 识别新模块源:

    • 重新启动机器。 (每次都有效。)
    • 在每个打开的会话中重置PSModulePath

      $env:PSModulePath=[Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
      

      我发现这对于在正常和提升的提示中运行都是必要的,以使其工作而无需在每种类型的提示中重新启动。 (另见对话@Topic: PSModulePath。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-29
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-22
      相关资源
      最近更新 更多