Заметки · 19.06.2023

Перекличка в модулях

При написании PS1-скриптов нередко возникают ситуации, когда необходимо импортировать в сессию выполнения какой-то модуль. Если модуль уже установлен — импорт проходит без проблем, но если его нет — возникают сложности в работе последующего кода. Каждый раз прописывать блок установки модуля, даже если он присутствует в системе — неправильный путь.

Намного корректнее проверить наличие модуля и уже от этого выстраивать алгоритм работы скрипта.

Я использую для этой цели вот такую функцию:

function ModuleAvailable($ModuleName)
{
    if (Get-Module -ListAvailable -Name $ModuleName)
    { return $True } 
    else { return $False }
}

Если функция вернула True — значит модуль установлен и можно его импортировать. При False потребуется установка модуля и последующий импорт.

Использование в коде:

$module = "PSTerminalServices"
$available = ModuleAvailable -ModuleName $module
if ($available) 
{ 
   Write-Host "Модуль $module установлен" -ForegroundColor Green
}
else
{ 
   Write-Host "Модуль $module не установлен" -ForegroundColor Red
}

Дальше уже фантазируйте сами!