[PowerShell Core 入門] 引数のある関数

PowerShell Core PowerShell Core
PowerShell Core

前回の記事では PowerShell Core における基本的な関数の作成方法と使用方法について説明しました。

今回は、引数のある関数の作成と使用する方法について説明をします。

引数のある関数の書式

以下に引数のある関数の書式を示します。

function 関数名 {
  param ([type]$引数1 [,[type]$引数n])
}

引数とは、関数に与えることができるパラメータのことです。関数は、受け取った引数を内部で利用することができます。

引数は複数個持つことができます。また、データの型を [type] で指定することにより、特定のデータ型値を受け取ることができます。

引数のある関数定義の例

以下は、前回の記事で紹介した Say-Hello 関数に引数を持たせた定義の例です。

この関数は、引数に名前を受け取って挨拶文を作成して表示すると言うものです。

function Say-Hello {
  param ([string]$name)

  Write-Host("こんにちは" + $name + "さん")
}

上記の関数の定義は、コマンドプロンプト(またはターミナル)で以下のように入力します。

Say-Hello 関数の定義

引数のある関数の実行

それでは、引数のある関数を実行してみましょう。

他のコマンドレットと同様に、引数名(パラメータ名)を指定して実行をします。

Say-Hello -name "HIRO"

引数のある関数の実行例

引数名は省略して実行することもできます。

Say-Hello "HIRO"

複数の引数がある関数

続いて、複数の引数がある関数の例を示します。

先ほどの Say-Hello に $isJapanese という引数を追加しました。この引数に $true を渡すと、日本語で挨拶を表示し、$false を渡すと英語で挨拶がされるようにしています。

function Say-Hello {
  param ([string]$name, [bool]$isJapanese)
  if ($isJapanese) {
    Write-Host("こんにちは" + $name + "さん")
  } else {
    Write-Host("Hello, " + $name + "!!")
  }
}

上記の Say-Hello 関数の実行例を以下に示します。 $isJapanese に $false を渡すしていますので英語で挨拶を表示します。

複数のパラメータがある関数の実行

引数にデフォルト値を持たせるには?

引数にはデフォルト値を持たせることができます。デフォルト値を持つ引数は、実行時に省略することができ、その際は予め設定しておいたデフォルト値が使用されます。

先ほどの Say-Hello の $isJapanese にデフォルト値 $false を設定する例を以下に示します。

function Say-Hello {
  param ([string]$name, [bool]$isJapanese = $false)
  if ($isJapanese) {
    Write-Host("こんにちは" + $name + "さん")
  } else {
    Write-Host("Hello, " + $name + "!!")
  }
}

デフォルト値の設定は、上記の例で示した通り「$引数 = デフォルト値」のようにします。

この関数の使用例を以下に示します。

デフォルト値を持つ関数の実行例

まとめ

今回は、引数を持つ関数の作成方法と使用方法について説明をしました。

引数を持つことで、関数はさまざまな処理を行うことがで切るようになります。

これを機会にマスターしましょう。

コメント

  1. […] 前回の記事で紹介した関数 Say-Hello は、位置パラメーターを持つ関数になります。 […]

タイトルとURLをコピーしました