【问题标题】:How to change PowerShell default module installation folder?如何更改 PowerShell 默认模块安装文件夹?
【发布时间】:2019-06-27 08:11:24
【问题描述】:

有没有办法更改 PowerShell 模块安装文件夹(模块在 Install-Module 之后放置的文件夹)? 这就是我想要这样做的原因:

  • 我使用的是 Windows 10,PowerShell 5.1.17763.503
  • 我的默认安装文件夹是Documents\WindowsPowerShell\Modules
  • 我的文档文件夹已移至包含, 符号(公司政策)的位置
  • PS 在加载 .ps1 时存在错误,该文件包含类并且文件路径中有 ,(类似于 this issue。)

我尝试过的:

  • 我认为安装文件夹是 $env:PSModulePath 中的第一个文件夹,我可以更改它。当我打开“编辑系统环境变量”时,我看到安装文件夹不在$env:PSModulePath 中。它会在您启动 PowerShell 时自动添加到变量中。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    无法更改Install-Module 的行为,因此它会将模块安装在自定义路径中。

    但是,您可以使用Install-Module [...] -Scope AllUsers 为所有用户安装模块。这将在$env:ProgramFiles\PowerShell\Modules 中安装模块,但此操作需要提升权限(也称为本地管理员权限)。

    如果您自己下载模块并将其安装到自定义路径(或使用Install-Module 的替代实现),您可以根据需要修改$env:PSModulePath

    您可以在每次启动 PowerShell 会话时使用配置文件修补 $env:PSModulePath,方法是将其添加到您的配置文件之一:

    # Prepend custom module path.
    $env:PSModulePath = ((@("C:\mymodulepath") + ($env:PSModulePath -split ";")) -join ";")
    

    来自Modifying the PSModulePath Installation Path

    要向该变量添加路径,请使用以下方法之一:

    • 要添加仅适用于当前会话的临时值,请在命令行运行以下命令:

      $env:PSModulePath = $env:PSModulePath + ";c:\ModulePath"
      
    • 要添加一个在会话打开时可用的持久值,请将以下命令添加到 Windows PowerShell 配置文件:

      $env:PSModulePath = $env:PSModulePath + ";c:\ModulePath"
      

    有关配置文件的更多信息,请参阅about_Profiles Microsoft TechNet 库。

    • 要将持久变量添加到注册表,请使用 Environment 创建一个名为 PSModulePath 的新用户环境变量 系统属性对话框中的变量编辑器。

    • 要使用脚本添加持久变量,请在 Environment 类上使用 SetEnvironmentVariable 方法。例如, 以下脚本添加了"C:\Program Files\Fabrikam\Module" 路径 PSModulePath 环境变量的值 电脑。添加用户PSModulePath环境的路径 变量,将目标设置为"User"

      $CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
      [Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + ";C:\Program Files\Fabrikam\Modules", "Machine")
      

    【讨论】:

    • 不幸的是,Install-Module 不尊重 $env:PSModulePath 变量。
    • @f0rt 没有办法改变Install-Module 的行为,所以它在自定义路径中安装模块,除了使用将安装在 ProgramFiles 中的AllUsers 范围。请检查我的更新答案。
    • Save-Module 似乎是一个解决方案。您可以指定新的模块安装文件夹。
    猜你喜欢
    • 2013-03-14
    • 1970-01-01
    • 2012-05-13
    • 2018-09-13
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多