PowerShellは、Windowsの自動化やシステム管理に欠かせない強力なツールです。中でも「関数(Function)」は、繰り返し使う処理をまとめたり、コードを見やすく整理したりする際にとても役立ちます。この記事では、PowerShellの関数の定義方法、引数の扱い方、戻り値の使い方などを実例付きで解説します。初心者の方でも実践しやすいように、丁寧な説明を心がけています。
PowerShellの関数(Function)は、一連のコマンドや処理を名前付きで定義しておき、後で何度でも呼び出せるようにする仕組みです。
function Greet {
Write-Output "こんにちは、PowerShellの世界へようこそ!"
}
この関数は Greet
という名前で定義されており、Greet
と入力するだけでメッセージを表示してくれます。
関数を使うことで、次のようなメリットがあります。
PowerShellでの関数の基本的な書き方は次のとおりです。
function 関数名 {
スクリプトブロック
}
例えば、文字列を出力するだけの簡単な関数は以下のようになります。
function Show-DateTime {
Get-Date
}
この関数を実行すると、現在の日時が表示されます。
Show-DateTime
関数に引数を渡すことで、より柔軟な処理が可能になります。引数は param()
を使って定義します。
function GreetUser {
param($Name)
Write-Output "こんにちは、$Name さん!"
}
使用例:
GreetUser -Name "Takeshi"
複数の引数を指定することも可能です。
function Add-Numbers {
param($a, $b)
return $a + $b
}
Add-Numbers -a 3 -b 7 # 結果は 10
関数は return
を使って値を返すことができます。返された値は、別の変数に格納して利用することもできます。
function Get-Square {
param($number)
return $number * $number
}
$result = Get-Square -number 5
Write-Output $result # 25
ただし、PowerShellでは明示的に return
を使わなくても、最後に評価された値が返されます。
PowerShellでは、引数に型を指定したり、必須にしたり、デフォルト値を設定することもできます。
function Double-Int {
param([int]$num)
return $num * 2
}
function Greet-Required {
param(
[Parameter(Mandatory=$true)]
[string]$Name
)
Write-Output "こんにちは、$Name さん"
}
function Greet-Default {
param([string]$Name = "ゲスト")
Write-Output "こんにちは、$Name さん"
}
関数内で定義した変数は、通常は関数の外からは参照できません。これを「スコープ」と呼びます。変数をグローバルにしたい場合は $global:
を使います。
function Set-GlobalValue {
$global:MyVar = "これはグローバル変数です"
}
ただし、グローバル変数は予期せぬ副作用を引き起こす可能性があるため、使用には注意が必要です。
function Test-FileExists {
param([string]$Path)
if (Test-Path $Path) {
Write-Output "ファイルは存在します"
} else {
Write-Output "ファイルが存在しません"
}
}
function Get-TotalSize {
param([string[]]$Files)
$total = 0
foreach ($file in $Files) {
if (Test-Path $file) {
$total += (Get-Item $file).Length
}
}
return $total
}
PowerShellでは、function
以外にも {}
で囲んだ ScriptBlock
を使ってコードの塊を定義できます。たとえば次のように使います。
$sb = {
param($name)
"Hello, $name"
}
&$sb "Taro" # 結果: Hello, Taro
関数との違いは、より柔軟に扱える点や、コマンドとして保存しておくよりも使い捨て用途に向いている点です。
複数の関数をまとめて .psm1
ファイルに保存することで、PowerShellモジュールとして扱えます。
MyFunctions.psm1
に関数を記述Import-Module
コマンドで読み込みImport-Module -Name "C:\Scripts\MyFunctions.psm1"
PowerShellの関数を使うことで、スクリプトの可読性と保守性が大きく向上します。基本の書き方から、引数の使い方、戻り値、高度な指定方法、さらにはモジュール化まで、関数はPowerShellスクリプトの中心的な役割を担います。まずは簡単な関数から始めて、徐々に実務的な自動化スクリプトへと応用していきましょう。