2012-04-17 15 views
1

私はいくつかのローカルコンピュータで動作するスクリプトを持っていますが、エラーハンドリングは行っていません。私はpowershellでエラー処理を一切していないので、私はここで全然ノブです。私はそれについて何かを読んだが、正直なところ、素早く簡単な答えを探しているだけです。Powershell:スクリプトのエラー処理

Q:スクリプトを重くしないようにできるだけ小さなコードでtry/catchのようなものがありますか?

答えて

2

はい、のtry/catch /最後にPowerShellのv2の中で提供されています:

Try{ 
<main code here> 
} 
Catch{ 
write-host $_ #Using the reserved $_ variable which should contain the error string 
} 
Finally{ 
<clean up code here - will execute regardless> 
} 

あなたは、PowerShellは、あなたがトラップ構造体を使用する必要がありますV1を使用するように制限している場合。

+0

私はpowershell v2を使用しています。 私がこのコードで行ったことは、すべてのスクリプトをTry {}に貼り付けて、try {}内に新しい行を書き込んだときにすべての例外を捕捉するようにcatchを不特定のままにしました。 sdgsf " " $ username = gc env:usernamejghc "(私はコマンドの最後にjiberishを書きました) エラーが発生しました:Get-内容:パス 'Env:\ usernamejghc'が存在しないため見つかりません。 私はこのテーマについてもう少し詳しく読んでいますが、このエラーを処理するための提案はありますか? – haakonlu

+0

あなたは$ env:usernamejghcを意味します。メッセージは、何が起こるかを正確に伝えます。 –

+0

はい、なぜキャッチブロックはキャッチしませんか?このエラーがそれをエスケープすれば、私は他もできると思いますか? – haakonlu