PowerShellの関数について(1)

2015-03-20PowerShell

PowerShellの関数は値の返却方法が.NET等の言語とは扱いが異なってきます。

関数内で「Write-Output」コマンドレットでメッセージを出力した場合、出力したメッセージとReturnで指定された値が返却されます。

一方、「Write-Host」コマンドレットでメッセージを出力した場合、Returnで指定した値のみが返却されます。

PowerShellのエラーになる関数の例

# エラーになる関数の例
Function testFunction {
Param([String]$mes,[Boolean]$flg)
# Write-Outputコマンドレットで出力された内容は呼び出し元に返却される
Write-Output $mes
if($mes {
Return 1
} else {
Return 0
}

[Stirng]$message = "メッセージを出力します。"
[Int]$result = TestFunction($message)($true)
if($result -eq 1) {
Write-Host "正です。"
} else {
Write-Host "誤です。"
}
# エラーになります

PowerShellの正常に動作する関数の例

# 正常に動作する関数の例
Function testFunction {
Param([String]$mes,[Boolean]$flg)
# Write-Hostコマンドレットで出力された内容は呼び出し元に返却されない
Write-Host $mes
if($mes {
Return 1
} else {
Return 0
}

[Stirng]$message = "メッセージを出力します。"
[Int]$result = TestFunction($message)($true)
if($result -eq 1) {
Write-Host "正です。"
} else {
Write-Host "誤です。"
}
# エラーになりません