tech.guitarrapc.cóm

Technical updates

PowerShell で パラメータ入力を必須にしたい

function の paramter を必須入力にしたい。 いくつかやり方はあります。 しかし PowerShel V1.0 の頃の情報が何故かいまだに見受けられるので記事にしておきます。

PowerShell V1.0では

デフォルトで、throw しちゃうのですね。
function hoge{
    Param (
        [string]$sample = $(throw "-sample is required.")
    )

    return $sample
}
うわぁ...。

PowerShell V2.0 以降なら

PowerShell V2.0 以降は、 [parameter()] に madatory 属性を付けるのが主流でしょうか。
function hoge{
    Param (
        [parameter(mandatory=$true)]
        [string]$sample
    )

    return $sample
}
$true じゃまです。

PowerShell V3,0 以降なら

同様ですが、 $true を外せます。
function hoge{
    Param (
        [parameter(mandatory)]
        [string]$sample
    )

    return $sample
}
ほげ。

ほかのやり方

もし string に変換出来るなら IsNullOrEmptyもありますが。
function hoge{
    Param (
        [string]$sample
    )

    if (-not([string]::IsNullOrEmpty($sample)))
    {
        return $sample
    }
}
あるいは、IsNullOrWhiteSpace とか
function hoge{
    Param (
        [string]$sample
    )

    if (-not([string]::IsNullOrWhiteSpace($sample)))
    {
        return $sample
    }
}
mandatory 属性を付けると、していしないと function実行が...... でも チェックはしたい....(いや、あるんですよこれが) こんな時に融通が効きません。 その場合は、内部で null や空文字チェックをしています。 状況に応じてどうぞお使いください。