Я хочу заставить PowerShell всегда устанавливать модули в пространство пользователя. Как ни странно, у Microsoft есть возможность принудительной установки в системные папки, требующие администратора с Install-Module <Name> -Scope AllUser
, но у нет есть способ принудительной установки в пользовательские папки.
$ModulePath = "$(Split-Path $Profile)\Modules" # Want all modules here.
$ModulePathTest = foreach ($i in ($env:PSModulePath).split(";")) { if ($i -like $ModulePath) { $True } } # $ModulePathTest will be $true if $ModulePath is on the $env:PSModulePath
if ($ModulePathTest -eq $null) { <do stuff> }
Итак, я получил это далеко и сейчас застрял. Если я вошел в систему с правами администратора, я думаю, что он устанавливается по умолчанию на C:\Program Files
, и, если он является обычным пользователем, он будет go до $ModulePath
.
• Существует ли быстрый способ добавления $ ModulePath в $ env: PSModulePath (и навсегда, так что я думаю, что это означает, что он должен быть помещен в реестр правильно? Я не вижу команду PowerShell, которая может навсегда обновить переменную среды - если я ошибаюсь, будет полезно знать)?
• Есть ли способ, которым кто-то может придумать, чтобы Install-Module
всегда устанавливался в $ModulePath
в вышеприведенном (то есть C:\Users\<Username>\Documents\WindowsPowerShell\Modules
)?