2011-12-21 20 views
1

私は、Exchangeメールボックスを作成するpowershellスクリプトを作成しようとしています。これは、メールボックスがまだ存在しない限り正常に動作しますが、エラーをキャッチしてそれを報告すると、スクリプトはすべてがうまくいったかのように実行されます。Exchange管理シェルのキャッチエラー

私はすでに既存のユーザーでスクリプトを実行し、それがエラーを示しているが、メールボックスが作成されたかのように正常に戻ります。

私は「なぜ」を解決した、this questionを発見し、私は有効-Mailboxコマンドは唯一の非終了エラーがスローされますね。とにかく

、これらのエラーは失敗キャッチするため提案されたすべてのソリューションを提供しています。このコマンドレットは、$ ErrorActionPreference変数$を無視しているようです。エラーが発生したかどうかにかかわらず、常に$ trueです。 $ errorには常に何かが含まれているので、ここでは何もチェックしません。

これは、私は、非常に基本的な使用しているスクリプトコードです。

param([string]$uid, [string]$email) 
trap [Exception] { 
    "ERROR: " + $_.Exception.Message 
    exit 
} 
Enable-Mailbox -Identity $uid -Database HaiTest-MBDataBase-01 -PrimarySmtpAddress $email 
"SUCCESS: mailbox created successfully" 

それは、トラブルの原因となるだけで、Exchange管理シェルの、他のすべてで動作します。 Exchange環境はExchange 2010サーバーです。

エラーのためにコマンドレットをチェックする方法はありますか?

答えて

3

トラッピングエラーはエラーのみを終端のために働く、あなたがEnable-Mailboxから取得するエラーのように見えることは終了エラーではありません。 ErrorAction変数に 'Stop'の値を渡すことで、エラーを終了エラーにすることができます。

+0

実際に動作したコマンドレットに直接ErrorActionを渡すことで、try/catch(PowerShell 2.0)を使用することもできます。これは、多くのおかげで、ありがとう。 –

関連する問題