未分類

PowerShell - ファンクションとメソッドの引数の違い

Windows PowerShell のファンクションと .NET で用意されているような一般的なメソッドに渡す引数の渡し方の違いについて、サンプルコードを用いて説明します。

ファンクションに引数を渡す時

丸カッコなしのスペース区切りで引数を渡します。例えば次のようなファンクション定義されている場合です。

function FConcat ([string]$s1, [string]$s2) { return $s1 + $s2 } 

この時には次のような形式でファンクションを実行します。

FConcat "ABC" "XYZ" 

.NET の静的メソッドに対して引数を渡す時

丸カッコありのカンマ区切りで引数を渡します。

[System.String]::Concat("ABC", "XYZ")

(補足説明) Windows PowerShell のファンクションは、コマンドレットやエイリアスと同じ分類に入るもののようです。Get-Command コマンドレットを実行すると、これら 3 種類のコマンドが出力されることからも分かります。コマンドレットもエイリアスも引数の指定に丸カッコはしません。各引数もスペースで区切ります。一般的なプログラミング言語の関数やメソッドとは取り扱い方が違うのだと思います。この点は間違えやすいところだと思います。

-未分類