如何为命令运算符调用指定可选参数?

时间:2019-07-02 01:06:40

标签: powershell

我有以下命令调用

& ".\script1.ps1" -switch1 "$DBN" "$($Server[-1])" "$Creds" "$ConnectionID" "$ConnectionDataSource"

我想将ConnectionID和Connection DataSource设置为可选

我该怎么做?

仅当我为ConnectionID和Connection Data Source输入某些内容时,此命令才有效。否则,如果我没有为这两个参数输入任何内容,它们将无法工作!

以下是此script1.ps1(我称其为IN script2.ps1)中的参数:

param(
[Parameter(Mandatory=$true)]
    [string]$DBN,

[Parameter(Mandatory=$true)]
    [string]$Server,

[Parameter(Mandatory=$false)]
[ValidateScript({![string]::IsNullOrEmpty($_.Trim())})]
    [string]$Creds,

[Parameter(Mandatory=$false, HelpMessage="Enter a UserID for the connection")]
[ValidateScript({![string]::IsNullOrEmpty($_.Trim())})]
[string]$ConnectionID, 

[Parameter(Mandatory=$false, HelpMessage="Enter a Data Source for the connection. Must enter the ConnectionID first")]
[ValidateScript({![string]::IsNullOrEmpty($_.Trim())})]
[string]$ConnectionDataSource
)

以下是此script2.ps1(我从中将其称为script1.ps1)中的参数:

param(
[Parameter(Mandatory=$true)]
    [string]$DBN,

[Parameter(Mandatory=$false, HelpMessage="Enter a UserID for the connection")]
[string]$ConnectionID, 

[Parameter(Mandatory=$false, HelpMessage="Enter a Data Source for the connection. Must enter the ConnectionID first")]
[string]$ConnectionDataSource
)

在没有这两个输入的情况下运行script1.ps1可以正常工作。

我这样运行:

PS> script1.ps1 DB1 Server1

所以我知道我必须在我要从中调用script1的第二个脚本的调用运算符中做些什么

我正在寻找这样的东西:

& ".\script1.ps1" -switch1 "$DBN" "$($Server[-1])" "$Creds" [optional]"$ConnectionID" [optional]"$ConnectionDataSource"

1 个答案:

答案 0 :(得分:0)

想通了!这是因为我在script1.ps1参数中有这个

[ValidateScript({![string]::IsNullOrEmpty($_.Trim())})]

通过注释掉,甚至将其替换为[AllowNull]属性,都可以使用!