如何更改PowerShell默认模块安装文件夹?

f0r*_*0rt 3 powershell

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

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

我试过的:

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

meh*_*kin 5

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

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

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

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

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

修改 PSModulePath 安装路径

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

有关配置文件的详细信息,请参阅Microsoft TechNet 库中的about_Profiles

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

  • 要使用脚本添加持久变量,请使用SetEnvironmentVariableEnvironment 类上的方法。例如,以下脚本将"C:\Program Files\Fabrikam\Module"路径添加到PSModulePath计算机的环境变量值。要将路径添加到用户PSModulePath环境变量,请将目标设置为"User".

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

  • @f0rt 无法更改“Install-Module”的行为,因此它会在自定义路径中安装模块,除了使用将安装在 ProgramFiles 中的“AllUsers”范围之外。请检查我更新的答案。 (2认同)