Powershellの相互排他的パラメータの使用例
2022-02-04 13:55:42
Powershellの関数は相互に排他的で、ユーザーがどちらか一方しか選択できないようにする必要がある場合があります。
スクリプトの相互に排他的なパラメータセットを作成するには、パラメータに異なる属性のフラグを付け、それらがユニークであることを確認します(パラメータのタイプが自動的に認識されないことを前提としています)。
function Test-ParameterSet
{
[CmdletBinding(DefaultParameterSetName='number')]
param
(
[int]
[Parameter(ParameterSetName='number', Position=0)]
$id,
[string]
[Parameter(ParameterSetName='text', Position=0)]
$name
)
$PSCmdlet.ParameterSetName
$PSBoundParameters
}
上の関数は、-idと-nameという2つの引数を持ちます。ユーザはどちらか一方のみを使用することができ、両方を使用することはできません。また、この例では、ユーザが入力したパラメータを取得する方法を示しています。
複数の互いに排他的なパラメータは、"ParameterSetName"の設定によって互いに区別することができます(集約パラメータも含まれます)。
実際には、1つのパラメータに複数のパラメータ、つまり固定パラメータとオプションパラメータを割り当てることもできます。
function Test-ParameterSet
{
[CmdletBinding(DefaultParameterSetName='NonCredential')]
param
(
$id,
[Parameter(ParameterSetName='LocalOnly', Mandatory=$false)]
$LocalAction,
[Parameter(ParameterSetName='Credential', Mandatory=$true)]
[Parameter(ParameterSetName='NonCredential', Mandatory=$false)] $LocalAction, [Parameter(ParameterSetName='Credential', Mandatory=$false)]
$ComputerName,
[Parameter(ParameterSetName='Credential', Mandatory=$false)] $ComputerName, [Parameter(ParameterSetName='Credential', Mandatory=$false)]
$Credential
)
$PSCmdlet.ParameterSetName
$PSBoundParameters
if ($PSBoundParameters.ContainsKey('ComputerName'))
{
Write-Warning 'Remote Call!'
}
}
Test-ParameterSet関数は、"NonCredential"パラメータを使用しているときは-ComputerNameがオプションであること、ユーザーが"-Credential"パラメータを使用すると-ComputerName"が再び必須になり、"-LocalAction"パラメータが使用されていると-ComputerNameと-Credentialが利用できないことを教えてくれる関数です。
関連
-
PowerShellスクリプトでパスワードを保存する方法
-
powershellでSQL SERVERの全バージョンを弄る方法
-
PowershellによるWindowsログのクエリ方法
-
PowerShell 配列の複数の入力メソッド
-
PowerShellで管理者権限でアプリケーションを起動する方法
-
PowerShell は、現在のスクリプトランタイムによって消費されるメモリの動的フェッチを実装しています。
-
Powershellですべてのディスクレターを取得する方法
-
Powershellスクリプトで条件付きブレークポイントを使用する例
-
PowerShellでWPFを呼び出してクールなウィンドウを生成する例
-
Windowsシステムのシリアル番号を取得するPowerShellスクリプト
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
PowerShellコマンド集(概要)
-
PowerShellでパフォーマンスカウンターのバイナリファイル(.blg)の記録を読み込んで計算結果をまとめる
-
PowerShell 3.0 Hyper-V 3.0 の管理
-
PowerShellパイプラインチュートリアル(パイプラインの例)
-
Powershellスクリプトの4種類の実行権限についてご紹介します。
-
PowerShellのエスケープ文字とは何ですか?
-
テキストファイルの暗号化・復号化に対するPowershellのアプローチ例
-
PowershellでWebページを開く例
-
PowerShell Excel、CSVの詳細紹介
-
PowerShellスクリプトファイルをcmdで直接実行する方法