グローバルスコープ
最後にグローバルスコープを持つ変数について説明したいと思います。グローバル変数は、スクリプトファイルを超えてスコープを持つ変数です。
下記スクリプトで実験してみたいと思います。
$global:glb_a = 3 function funcA { Write-Host "2)$glb_a" } Write-Host "1)$glb_a" funcA Write-Host "3)$glb_a"
グローバル変数を作成するには、1行目のようにglobal
修飾子を使用します。
このスクリプトの実行結果は下記の通りです。
PS C:\Work> ./scope5.ps1 1)3 2)3 3)3
スクリプト内で$glb_a
というグローバル変数を作成しました。最初に説明したように、グローバル変数はスクリプトファイルを超えてスコープを持つので、スクリプトの実行後にコマンドラインで変数を参照することが可能です。
PS C:\Work> $glb_a 3
ではグローバル変数のスコープを図で見てみましょう。
グローバル変数のスコープは、「Scope5.ps1」が呼び出された後(水色の矢印)スクリプトが終わるまで有効です。
さらに、スクリプトが終了し、コンソールウィンドウに戻った後(赤の点線)もグローバル変数は生存し続けます。
結果として、コマンドラインで$glb_a
を確認できたというわけです。
まとめ
今回は、次の3点について説明しました。
- フィルタ
- スクリプトブロック
- 変数のスコープ
変数のスコープは説明が長くなってしまいましたが、スクリプト開発を行う上で非常に重要な概念ですので、ぜひ覚えてもらいたいと思います。
次回は、エラーの取り扱いについて説明します。
PowerShell from Japan!! メンバー一同お待ちしております。