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

时间:2019-06-27 08:11:24

标签: powershell

是否可以更改PowerShell模块安装文件夹(将模块放置在Install-Module之后的文件夹)? 这就是为什么我要这样做:

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

我尝试过的事情:

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

1 个答案:

答案 0 :(得分:0)

无法更改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"
    
  •   
     

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

     
      
  • 要将持久性变量添加到注册表,请使用环境创建一个名为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")
    
  •