データベースにレコードを書き込むコマンドレットを (PowerShell で) 作成しています。条件付きコマンド ラインでは、4 つの異なるパラメーター セットを定義する必要があるようです。
これを行うためのより適切な方法はありますか?
詳細
コマンドレットのパラメーターは次のとおりです。
ComputerName
(接続先の SQL サーバー)Path
(データの場所)Xml
(生データ自体)UserName
Password
UseIntegratedSecurity
(ユーザー名/パスワードの代わりに、現在の資格情報を使用します)
Path
とXml
は相互に排他的であり、UserName
/Password
とUseIntegratedSecurity
は相互に排他的です。
これを正しく接続するには、次のように 4 つの異なるパラメーター セットを定義する必要があるようです。
function Install-WidgetData
{
[CmdletBinding()]
PARAM
(
[Parameter(ParameterSetName="Xml_AutoConnect", Mandatory=$True)]
[Parameter(ParameterSetName="Xml_ManualConnect", Mandatory=$True)]
[Parameter(ParameterSetName="Path_AutoConnect", Mandatory=$True, )]
[Parameter(ParameterSetName="Path_ManualConnect", Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string[]] $ComputerName,
[Parameter(ParameterSetName="Path_AutoConnect", Mandatory=$True)]
[Parameter(ParameterSetName="Path_ManualConnect", Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string] $Path,
[Parameter(ParameterSetName="Xml_AutoConnect", Mandatory=$True)]
[Parameter(ParameterSetName="Xml_ManualConnect", Mandatory=$True)]
[ValidateNotNullOrEmpty()]
[string[]] $Xml,
[Parameter(ParameterSetName="Xml_AutoConnect")]
[Parameter(ParameterSetName="Path_AutoConnect")]
[switch] $UseIntegratedSecurity,
[Parameter(ParameterSetName="Xml_ManualConnect")]
[Parameter(ParameterSetName="Path_ManualConnect")]
[ValidateNotNullOrEmpty()]
[string] $UserName,
[Parameter(ParameterSetName="Xml_ManualConnect")]
[Parameter(ParameterSetName="Path_ManualConnect")]
[ValidateNotNullOrEmpty()]
[string] $Password,
)