スクリプトを開発し始めると、途中経過を確認しながら開発を進めたいと思うときはありませんか?
このようなときに使用するコマンドレットがWrite-Debugコマンドレットです。
このコマンドレットは、コンソールウィンドウにメッセージを表示するためのコマンドレットです。
コンソールにメッセージを表示するコマンドレットとしてはWrite-Hostコマンドレットがありますが、両者にはどのような違いがあるでしょう?
それは、
という違いがあります。
$DebugPreferenceは下記の3つの値を指定することが可能です。
それでは、下記スクリプト(Debug.ps1とします)を準備して、それぞれについて実験をしてみましょう。
$a = 2 $b = 3 $c = $a + $b Write-Debug "Line4: $c" $a = 4 $b = 5 $c = $a + $b Write-Debug "Line8: $c"
Continue
まずは、下記のようにして $DebugPreferenceの設定を変更します。
PS C:\Work> $DebugPreference = "Continue"
つぎに、作成したスクリプトを実行してみましょう。
PS C:\Work> ./Debug.ps1 デバッグ: Line4: 5 デバッグ: Line8: 9
Write-Debugに指定したメッセージがきちんと表示されていますね。
SilentContinue
PS C:\Work> $DebugPreference = "SilentlyContinue"
スクリプトを実行します。
PS C:\Work> ./Debug.ps1 PS C:\Work>
Stop
PS C:\Work> $DebugPreference = "Stop"
PS C:\Work> ./Debug.ps1 デバッグ: Line4: 5 Write-Debug : シェル変数 "DebugPreference" が Stop に設定されているため、コマンドの実行が停止されました 発生場所 C:\Work\Debug.ps1:4 文字:12 + Write-Debug <<<< "Line4: $c"
1つめのWrite-Debugで指定されたメッセージを表示した後、エラーメッセージを表示して処理を中断したことがわかります。
Inquire
PS C:\Work> $DebugPreference = "Inquire"
PS C:\Work> ./Debug.ps1 デバッグ: Line4: 5 確認 この操作を続行しますか? [Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"):
1つめのWrite-Debugで指定されたメッセージを表示したあとに、スクリプトを実行するかを確認してくることがわかります。
ここで[Y]または[A]を押すと、スクリプトが続行されます。
確認 この操作を続行しますか? [Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"): デバッグ: Line8: 9 確認 この操作を続行しますか? [Y] はい(Y) [A] すべて続行(A) [H] コマンドの中止(H) [S] 中断(S) [?] ヘルプ (既定値は "Y"):
このように、Write-Debugコマンドレットを使用すれば、デバッグ時のみメッセージを表示すしそれ以外は表示しない、という制御を行うことができますので、是非活用してみてください。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail