我在使用Powershell调用Import-Module时遇到了问题,并会对一些建议表示感谢。
根据之前的问题和答案,在尝试使用PowerShell导入模块时收到以下错误,可以忽略:
文件被跳过,因为它已经存在于“Microsoft.PowerShell”中。
问题是如果import命令在try / catch语句中,它将被捕获。
我已经阅读了很多关于此的帖子(例如PowerShell on SCOM fails to import module),并且有人提到尝试将“-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: $_"
}
答案 0 :(得分:6)
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
}