はじめに
これまでにPowerShellを使って以下のような小さなプログラムを幾つか作ってきましたが、もう少し大きなプログラムを作るには自作関数を作れると便利です。
そこでPowerShellで自作関数を作る方法を記事としてまとめてみました。
関数の命名規則
- Microsoftの公式リファレンスを見ると、「動詞と単数形の名詞を含むパスカルケース名を使用すること」とされています。
- パスカルケースはアッパーキャメルケースと同じ意味だそうです。
関数名の一例
CheckISOHash // ISOファイルのHash値をチェックする
ConvertToSVG // SVGファイルに変換する
ReadUserConf // ユーザーの設定ファイルを読み込む
SendSlack // Slackにメッセージを送信する
WriteDebugLog // デバッグ用のログを書き込む
関数の構文
基本的な関数
- 基本的な関数の構文は以下のようになっており、他の言語とほとんど変わらない印象です。
基本的な関数の例
function SayHello {
Write-Host "Hello"
}
実行結果
> SayHello
Hello
パラメーター付きの関数
- パラメーター付きの関数の場合、以下のように定義するそうです。
- C#などと比べて、ちょっと変わった書き方に感じますね...
パラメーター付きの関数の例
function PrintMessage {
param($message)
Write-Host $message
}
実行結果
> PrintMessage "Hello,world!"
Hello,world!
実行結果(パラメーター名を指定する場合)
> PrintMessage -message "Hello,world!"
Hello,world!
- 上記の
PrintMessage
関数のパラメーターでデータ型を指定する場合、以下のようになります。
パラメーター付きの関数(+データ型の指定)の例
function PrintMessage {
param([string]$message)
Write-Host $message
}
戻り値のある関数
- 戻り値は他の言語と同様に
return
を使いますが...
戻り値のある関数の例
function AddNumber {
param([int]$a, [int]$b)
return $a + $b
}
実行結果
$result = AddNumber 2 3
Write-Host $result
- 以下のような書き方でも、上記と同様に
$a + $bの結果
を返してくれるそうです。- returnなしのパターンは、ちょっとRubyっぽさを感じますね。
戻り値のある関数の例(returnなし)
function AddNumber {
param([int]$a, [int]$b)
$a + $b
}
戻り値のある関数の例(returnだけの場合)
function AddNumber {
param([int]$a, [int]$b)
$a + $b
return
}