Как изменить папку установки модуля PowerShell по умолчанию? - PullRequest
0 голосов
/ 27 июня 2019

Есть ли способ изменить папку установки модуля PowerShell (папку, в которую помещаются модули после Install-Module)? Вот почему я хочу сделать это:

  • Я на Windows 10, PowerShell 5.1.17763.503
  • Моя папка установки по умолчанию: Documents\WindowsPowerShell\Modules
  • Папка «Мои документы» была перемещена в папку, содержащую символ , (корпоративные политики)
  • PS имеет ошибку при загрузке .ps1, который содержит классы и имеет , в пути к файлу (аналогично эта проблема .)

Что я пробовал:

  • Я думал, что папка установки - это первая папка в $ env: PSModulePath, и я могу ее изменить. Когда я открыл «Редактировать переменные среды системы», я увидел, что папка установки не находится в $env:PSModulePath. Он автоматически добавляется в переменную при запуске PowerShell.

1 Ответ

0 голосов
/ 27 июня 2019

Нет способа изменить поведение 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 ";")

С Изменение пути установки PSModulePath

Чтобы добавить пути к этой переменной, используйте один из следующих методов:

  • Чтобы добавить временное значение, доступное только для текущего сеанса, введите в командной строке следующую команду:

    $env:PSModulePath = $env:PSModulePath + ";c:\ModulePath"
    
  • Чтобы добавить постоянное значение, доступное при каждом открытии сеанса, добавьте следующую команду в профиль Windows PowerShell:

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

Для получения дополнительной информации о профилях см. about_Profiles в Библиотека Microsoft TechNet.

  • Чтобы добавить постоянную переменную в реестр, создайте новую переменную среды пользователя с именем PSModulePath с помощью Environment Редактор переменных в диалоговом окне «Свойства системы».

  • Чтобы добавить постоянную переменную с помощью сценария, используйте метод SetEnvironmentVariable в классе Environment. Например, следующий скрипт добавляет путь "C:\Program Files\Fabrikam\Module" к значению переменной среды PSModulePath для компьютер. Чтобы добавить путь к пользовательской среде PSModulePath переменная, установите цель на "User".

    $CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
    [Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + ";C:\Program Files\Fabrikam\Modules", "Machine")
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...