SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Windows PowerShell 入門

Windows PowerShell 入門(6)-関数編1

関数の作成方法と引数

引数の初期値

 引数には初期値を与えることが可能です。引数を省略して関数が呼び出された場合に、あらかじめ与えておいた初期値が使用されます。

 初期値を与えるには引数を、

変数 = 値

 のように記述します。

 下記は引数$favoriteに"CodeZine"を与えています。

PS > function MyFavorite ($favorite="CodeZine") {
>> Write-Host ("My favorite is $favorite")
>> }

 関数名のみで呼び出すと、

PS > MyFavorite
My favorite is CodeZine

 となり、初期値が変数にセットされることが分かります。

 先ほどは引数の初期値に定数を与えましたが、式を与えることも可能です。

PS > function Get-Year ([DateTime]$ymd = $(Get-Date)) {
>> Write-Host $ymd.Year
>> }
>>

 上記の関数Get-Yearは受け取った引数(年月日)の年のみを表示する関数です。引数が省略された場合は、Get-Dateコマンドレットの結果(実行したときの年月日)が$ymdの初期値となります。

暗黙の引数

 ここまでの引数の例は、どのような値をいくつ受け取るかを事前に指定しています。

 PowerShellには$argsという自動変数があり、明示的に引数を指定していない関数でも値を受け取ることができます。例として引数のない関数Hello2を作成して$argsの動作を確認したいと思います。

PS > function Hello2 {
>>  Write-Host ("こんにちは" + $args + "さん")
>> }
>>

 入力が完了したら次のように実行してみましょう。

PS > Hello2 CodeZine
こんにちはCodeZineさん

 このように明示的な引数がなくても値を受け取ることができます。

 また、$args変数は複数の値を受け取ることができます。関数へ複数の値を渡す場合は、値をスペースで区切ります。

PS > function Test-Args {
>> foreach ( $val in $args )
>> {
>> Write-Host $val
>> }
>> }
>>

 上記は受け取った引数すべてを表示するというものです。

 試しに

PS > Test-Args "A" "B" "C"

 と入力してみてください。

PS > Test-Args "A" "B" "C"
A
B
C

 となり、3つの値を$args変数が受け取っていることを確認できます。

自動変数
 「自動変数」とは、Windows PowerShellによって自動的に設定される変数のこと。$Args以外にも多くの自動変数があります。興味のある方はコマンドラインで
help about_automatic_variables | more
 と入力してみてください。

参照渡し

 参照渡しをするには、引数の前に[ref]を付けます。

 また、関数内部では参照渡しで受け取った値は、

$変数名.value

 として使用する必要があります。

 下記は、参照渡しのの引数$xと値渡しの引数$yを持つ関数です。この関数は、内部で受け取った引数の値を数値の5で上書きするというものです。

PS > function Test-Ref([ref]$x, $y)
>> {
>> $x.value = 5
>> $y = 5
>> }
>>

 この関数を実行したらどうなるか実験してみましょう。

 まず、変数$x$yを準備し、初期値として1を代入しておきます。次に、関数Test-Refを実行するのですが、参照渡しの引数の書き方に注意が必要です。([ref]変数名)のように記述する必要があります。

PS > $x = 1
PS > $y = 1
PS > Test-Ref ([ref]$x) $y

 では、この関数の実行結果はどうなったかを確認します。

PS > $x, $y
PS > 5
PS > 1

 参照渡しである$xは"5"に書き換わり、$yは関数実行前の値"1"が格納されています。

次のページ
まとめ

この記事は参考になりましたか?

Windows PowerShell 入門連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2491 2008/05/29 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー