我正在写一个负责将记录写入数据库的cmdlet(在PowerShell中)。使用条件命令行,似乎我必须定义四个不同的参数集。是否有更好的方法来声明多个参数集?
是否有这样做的更succient方式?
详情
小命令的参数是:
ComputerName
(SQL服务器连接到)Path
(数据的位置)Xml
(该原始数据本身)UserName
Password
UseIntegratedSecurity
(而不是用户名/密码,则使用当前凭证)
Path
和Xml
是互斥的,并且UserName
/Password
和UseIntegratedSecurity
是互斥的。
得到这个正确接线,好像我必须定义四个不同的参数设置,例如:
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,
)
'$ ComputerName'提供访问其它来源的连接字符串可以没有'ParametrSetName'。 –
据我所知,你唯一可以最小化的是@ C.B。说过。让我们只是说有一个原因,为什么'#region'存在=) –