PowerShellでは、引数に「スイッチパラメータ」と呼ばれるものを使用することができます。
スイッチパラメータを持つコマンドレットの一つに Read-Host があります。
Get-Helpコマンドで、Read-Hostのヘルプをみてみましょう。
PS > get-help read-host -Detailed 名前 Read-Host 概要 コンソールから入力を 1 行読み取ります。 構文 Read-Host [[-prompt] <OBJECT>] [-asSecureString] [<CommonParameters>] 詳細説明 コンソールから入力を 1 行読み取ります。 ユーザーに入力を要求する場合に使用できます。 セキュリティ保護された文字列を作成する場合にも使用できます。 パラメータ -prompt <Object> これはプロンプト オブジェクトになる文字列です。 プロンプト文字列にスペースが含ま れている場合、そのスペースは二重引用符で囲む必要があります。 -asSecureString <SwitchParameter> True に設定されてい場合、入力文字はアスタリスク (*) でエコー表示されます。 出力は SecureString オブジェクトになります。 <CommonParameters> このコマンドレットは、次の共通パラメータをサポートします: -Verbose、-Debug、 -ErrorAction、-ErrorVariable、および -OutVariable。詳細については、 「get-help about_commonparameters」と入力してヘルプを参照してください。 : :長いので省略 :
-asSecureStringのところがSwitchParameterとなっています。
-asSecureStringは引数値を必要としないパラメータであることを意味し、指定するだけで機能します。
Read-Hostはコマンドラインから1行を読み取るコマンドレットですが、-asSecureStringが指定されると入力された値は*で表されます。
PS > Read-Host -asSecureString ****** System.Security.SecureString
このように、スイッチパラメータは指定することで動作を変更することを可能にするための、引数です。
では、スイッチパラメータの作成方法についてみていきましょう。
スイッチパラメータを作成するには、スイッチパラメータにする引数の前に[switch]を付けるだけです。
下記は、単純にHelloと表示するだけのスクリプトですが、スイッチパラメータ-helpを指定すると説明が表示されるというものです。(say-hello.ps1とします)
Param ([switch]$help) if ( $help ) { Write-Host "この関数は挨拶をします" } else { Write-Host "Hello!!" }
以下はスイッチパラメータなし呼び出した場合です。
PS C:\Work> ./say-hello.ps1 Hello!!
以下はスイッチパラメータを指定した場合です。
PS C:\Work> ./say-hello.ps1 -help この関数は挨拶をします
スイッチパラメータの動作について理解していただけたでしょうか?
ここでスイッチパラメータのメカニズムについてみてみましょう。
スイッチパラメータは、指定すると変数に真の値(TRUE)がセットされます。
下記スクリプト(Check-Switch.ps1)を準備して実験してみましょう
param ([switch]$sw) Write-Host $sw
スイッチパラメータを指定しない場合は、下記のようにスイッチパラメータ変数にFalseがセットされます。
PS C:\Work> ./Check-Switch False
スイッチパラメータを指定した場合は、下記のようにスイッチパラメータ変数にTrueがセットされます。
PS C:\Work> ./Check-Switch -sw True
ぜひ、スイッチパラメータについて理解し、今後のスクリプト開発お役立てください。
Theme design by Jelle Druyts
Pick a theme: BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2 BlogXP business calmBlue Candid Blue dasBlog dasblogger DirectionalRedux Discreet Blog Blue Elegante essence Just Html MadsSimple Mobile Mono Movable Radio Blue Movable Radio Heat nautica022 orangeCream Portal Project84 Project84Grass Slate Sound Waves Tricoleur useit.com Voidclass2
Powered by: newtelligence dasBlog 2.0.7226.0
The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.
© Copyright 2009, HIRO
E-mail