Где-то здесь я уже касался темы установки-импорта модулей в сессию PS1-скрипта. Темой данного поста стала функция GetModule, которую я обычно использую для автоматизации установки модулей и их последующего импорта.
Собственно, функция:
function GetModule
{
Param([Parameter(Mandatory=$true)]$ModuleName)
$module = Get-Module -ListAvailable -Name $ModuleName
if ($module)
{
Import-Module $ModuleName
}
else
{
Install-Module $ModuleName -Scope CurrentUser
Import-Module $ModuleName -Force
}
}
У функции GetModule лишь один принимаемый параметр — ModuleName.
Обращаю внимание, что установка модуля производится в исполняемую среду пользователя. Права администратора для установки модулей в данном случае не нужны. Однако, стоит учесть, что для правильной работы некоторых командлетов из установленных или импортированных модулей всё равно могут потребоваться права администратора вне зависимости от места установки.
Если потребуется установка модуля для всех пользователей — замените значение параметра Scope в командлете Install-Module на AllUsers.