■ PowerShell学習 #6:関数

#5:制御構文 からの続き


※本文中の "$" は半角で読み替えること。

関数

function func { }
function func( $arg1, $arg2 ) { }
function func( [int]$arg1, [string]$arg2 ) { }
function func( $arg1 = "test" ) { }
function func( $arg1 = $(Get-Date) ) { }
引数を指定しない場合は暗黙の引数となり $args で引数を取得可能
function func {
  foreach ( $val in $args ) { }
}

参照渡し

引数の参照渡しも使える
function func ( [ref]$arg1 ) { }

名前付き引数

function func ( $arg1, $arg2 ) { }
func -arg2 "X" -arg1 "Y"

switchパラメータ

function func( [switch]$help ) {
  if ( $help) {
    ・・・
  }
}
func -help

関数を別ファイルにする

関数を別のスクリプトファイルにする場合、関数名の先頭に global修飾子 を付ける
function global:func { }
後はスクリプトファイルを ./script.ps1 のように実行すれば関数が使えるようになる

プロファイル

PowerShell起動時に1度だけ読み込まれる特別なスクリプト
プロファイルの場所は $Profile 自動変数で確認できる

パイプライン引数

パイプラインで取得した値は $input 自動変数に格納される

またパイプラインを処理する際、最初に実行、値毎に実行、最後に実行 を処理することが可能
これらを行うには、
・begin { }
・process { }
・end { }
の各ブロックに処理を記述する
processでは、パイプラインで受け取った値は $_ で取得する ($inputではない)

フィルター

function の代わりに "filter" と書けばフィルターが作れる
パイプラインで取得した値は $_ で取得する

スクリプトブロック

スクリプトブロックを変数に代入可能
$s = { $a * 3 }
スクリプトブロックを実行するには &演算子 を付ける
& $s

関数を呼び出すには?

(2020.09.10 追記)
関数を呼び出す際、引数のカッコは不要。
例えば "function test()" を呼び出す場合は "test" だけを書く。
引数がある場合 "function test($a, $b)" は "test 1 2" のように書く。
さらに戻り値がある場合も同様で "$a = test 1 2" のように書く。


#7:エラー処理 へ続く


PowerShell学習

0 件のコメント:

その他の記事