При написании 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
}
Дальше уже фантазируйте сами!