我有以下命令调用
& ".\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"
答案 0 :(得分:0)
想通了!这是因为我在script1.ps1参数中有这个
[ValidateScript({![string]::IsNullOrEmpty($_.Trim())})]
通过注释掉,甚至将其替换为[AllowNull]
属性,都可以使用!