Как правильно игнорировать ошибки модуля импорта в PowerShell
в настоящее время у меня возникли проблемы при вызове Import-Module с Powershell и был бы признателен за некоторые советы.
согласно предыдущим вопросам и ответам здесь, следующая ошибка, полученная при попытке импортировать модуль с помощью PowerShell, может быть проигнорирована:
файл пропущен, потому что он уже присутствовал в "Microsoft.В PowerShell".
проблема в том, что он будет пойман, если команда импорта находится в пределах попытки / инструкция catch.
Я прочитал несколько сообщений об этом (пример PowerShell на SCOM не удается импортировать модуль) и один упомянул, чтобы попытаться добавить"-ErrorAction SilentlyContinue " в команду Import-Module, но, к сожалению, это не имеет значения.
Ниже приведен код, который я в настоящее время использую для проверки проблемы, которая должна дать вам лучшее понимание того, что я пытаюсь достичь.
кому-нибудь удалось успешно игнорировать эти предупреждения об импорте модуля, завернутые в try / catch раньше?
Спасибо за ваше время,
Андрей
function load_module($name)
{
if (-not(Get-Module -Name $name))
{
if (Get-Module -ListAvailable | Where-Object { $_.name -eq $name })
{
Import-Module $name
return $true
}
else
{
return $false
}
}
else
{
return $true
}
}
$moduleName = "ActiveDirectory"
try
{
if (load_module $moduleName)
{
Write-Host "Loaded $moduleName"
}
else
{
Write-Host "Failed to load $moduleName"
}
}
catch
{
Write-Host "Exception caught: $_"
}
1 ответов
function Load-Module
{
param (
[parameter(Mandatory = $true)][string] $name
)
$retVal = $true
if (!(Get-Module -Name $name))
{
$retVal = Get-Module -ListAvailable | where { $_.Name -eq $name }
if ($retVal)
{
try
{
Import-Module $name -ErrorAction SilentlyContinue
}
catch
{
$retVal = $false
}
}
}
return $retVal
}