多くの関数とコマンドレットは、渡された引数に応じて異なる型を返します。これにより、戻り値をテストする必要があります。現在、ネストされた if-then-else ステートメントでこれを行っています。以下は、IP 構成を検証するために今日書き始めたスクリプトの例です。
$adapters = get-wmiobject win32_networkadapterconfiguration -filter "ipenabled = 'true'"
$adapters_type = $adapters.gettype().tostring()
if ($adapters_type -eq "System.Management.ManagementObject") {
#TODO: configure network adapter.
}
else if ($adapters_type -eq "System.Object[]") {
#TODO: handle the case of multiple network adapters.
}
else {
echo "error: unexpected type returned from internal function."
}
テストする複数の戻り変数があると、コードがすぐに深くネストされます。多くの型のいずれかが存在する可能性のある変数を処理するためのより自然な方法はありますか?