PowerShell パラメータの相互排除の例
2022-02-04 01:14:19
PowerShell関数内でパラメータを相互に排他的にしたい場合、"ParameterSetName"属性を使用して、異なるパラメータまたはパラメータセットでパラメータ属性を定義することが可能です。
PowerShellの関数では、同じパラメータ名で複数のパラメータ属性を定義できることに、多くの人は気づいていないかもしれません。つまり、mandatoryを使えば、あるパラメータをあるシナリオでは必須、別のシナリオではオプションとすることができます。
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は両方ともオプションになります。
関連
最新
-
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は、ユーザーのプライマリSMTPアドレスを検索します。
-
Win Server 2008 R2のためのPowerShellマネジメント
-
PowerShell は、現在のスクリプトランタイムによって消費されるメモリの動的フェッチを実装しています。
-
PowerShell の実装は、ファイルを開くデフォルトのアプリケーションを照会する
-
PowerShelプログラム実行後、スクリプト自体を削除する方法
-
PowerShellで文字列を別行動で表示する2つの方法
-
PowerShellでスペース、ドット、マイナス、改行を削除するコード例
-
バッチ処理ではなくPowerShellを使おう!
-
PythonでPowerShellを呼び出してbatファイルをリモート実行する例