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