2012-05-08 21 views
6

PowershellでImport-Moduleを呼び出す際に、現在問題が発生していて、いくつかのアドバイスをいただきありがとうございます。 PowerShellを使用してモジュールをインポートしようとしながら、受信した以前の質問と回答ここでは、次のエラー、によると、無視することができますPowerShellでインポートモジュールのエラーを正しく無視する方法

:それはすでに「のMicrosoft.PowerShell」から存在していたので、

ファイルはスキップ。

問題は、インポートコマンドが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

私は –

+0

こんにちはシェイのない原因あなたは、あなたがあなたのテストコードとADモジュールをロードするときに言及し、エラーを取得しますか、はい、 "Import-Module ActiveDirectory"を単独で実行すると、このエラーが発生します。 – AndrewB

+0

あなたは「積み込まれましたか?インポートモジュールActiveDirectory; Write-Host "loaded" –

答えて

5
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 
} 
+0

catchのretValに$が足りないことは別として、これは近づいています。インポートモジュールの周りにtry/catchを追加すると、エラーが隠され、try/catchのメインに捕まえられなくなります。ありがとう。 特定の「ファイルが既に存在しているためスキップされました」というメッセージが表示されても、エラーを非表示にしたいだけですが、例外メッセージをチェックすることでこれを実行できます。 – AndrewB

+0

不足している$を追加しました –

関連する問題