Как указать необязательный аргумент для вызова оператора команды? - PullRequest
1 голос
/ 02 июля 2019

У меня есть следующий вызов команды

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

Я хочу сделать ConnectionID и Connection DataSource необязательными

Как я могу это сделать?

Эта команда работает, только если я ввожу что-то для ConnectionID и источника данных подключения. в противном случае они не будут работать, если я не введу ничего для этих двух параметров!

вот параметры в этом 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 без этих 2 входов работает просто отлично.

я запускаю это так:

PS> script1.ps1 DB1 Server1

поэтому я знаю, что должен что-то сделать здесь, в операторе вызова этого второго сценария, который я вызываю script1 из

Я ищу что-то вроде этого:

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

1 Ответ

0 голосов
/ 02 июля 2019

Разобрался! это потому, что у меня есть это в script1.ps1 params

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

, комментируя или даже заменяя его атрибутом [AllowNull], он работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...