0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PowerShell】自作関数を作る

Last updated at Posted at 2022-11-26

はじめに

これまでに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
}

参考URL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?