PowerShellでregularとValidateSetを使用してパラメータを検証する
2022-02-05 23:13:31
PowerShell 2.0以降の場合
PowerShell を使用して関数を作成する場合、パラメータに期待する値を PowerShell に伝えるようにしてください。たとえば、ユーザーが曜日を入力する場合、次のように指定します。
コピーコード
コードは以下の通りです。
function Get-Weekday
{
param
(
$Weekday
)
"You chose $Weekday"
}
この時点で、ユーザーは任意の値を入力することができます。たとえそれが第7週のように法的な週でない場合でもです。
コピーコード
コードは以下の通りです。
PS> Get-Weekday -Weekday NoWeekday
You chose NoWeekday
また、正規表現型のバリデーションを見たことがある人もいるかもしれません。
コピーコード
コードは以下の通りです。
function Get-Weekday
{
param
(
[ValidatePattern('Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday')]
$Weekday
)
"You chose $Weekday"
}
これでPowershellは、ユーザーが指定したパターンに一致しない文字列を入力すると例外をスローしますが、例外メッセージは十分に親切ではありません。また、コンソールやISEエディタでは、パラメータを出力する際に以下のようなインテリジェントなプロンプトは表示されません。
そこで、ValidateSetを使うのがベターな方法でしょう。
コピーコード
コードは以下の通りです。
function Get-Weekday
{
param
(
[ValidateSet('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')]
$Weekday
)
"You chose $Weekday"
}
パラメータを出力する際に指定した値群に制限されるようになり、さらにISEで許可された値のリストを表示するよう、ユーザーにインテリジェントに促すようになりました。必要なパラメーターをちょうど記述している.NET タイプの列挙値を見つけることができれば、さらに簡単です。
コピーコード
コードは以下の通りです。
function Get-Weekday
{
param
(
[System.DayOfWeek]
$Weekday
)
"You chose $Weekday"
}
関連
-
PowerShell チュートリアル curl (Invoke-WebRequest) の使用方法について
-
PowershellによるWindowsログのクエリ方法
-
ADユーザーのパスワード属性を一括で変更するPowerShellコード
-
Powershellスクリプトの4種類の実行権限についてご紹介します。
-
PowerShelプログラム実行後、スクリプト自体を削除する方法
-
PowerShellでファイル名の一括変更
-
コンピュータのシリアル番号を取得するためのPowershellスクリプト
-
PowershellでWebサイトのレスポンスを確認し、実行時間を計算する例
-
タイプ別ソートのPowershell実装
-
PythonでPowerShellを呼び出してbatファイルをリモート実行する例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン