Отсутствует аргумент для параметра на PS1 - PullRequest
0 голосов
/ 05 февраля 2020

Я пытался выяснить, как я могу выдать исключение или установить его в значение по умолчанию, если я не установил какое-либо значение в параметре?

Function ConnectionStrings {

   param(
    [Parameter(
    Mandatory = $false)]

        [AllowNull()]
        [AllowEmptyString()]
    [string] $region 
   )

   try{

    if (!$regionHash.ContainsKey($region)){
        $regionHash["US"]
    } elseif (!$region) {
        $regionHash["US"]
        #$slave = $regionHash["US"].slave
        #$master =  $regionHash["US"].master
        #$track =  $regionHash["US"].tracking
    } else {
        $regionHash[$region]
        #$slave = $regionHash[$region].slave
        #$master =  $regionHash[$region].master
        #$track =  $regionHash[$region].tracking
    }
   } catch {
       Write-Warning -Message "OOPS!"
   }

 }

После запуска команды: ConnectionStrings -region Вместо этого следует выдать исключение или установить значение по умолчанию.

Нужно ваше руководство, я просто новичок в powershell.

Спасибо.

edit: без настройки значение параметров ConnectionStrings -region

1 Ответ

1 голос
/ 05 февраля 2020

Нельзя использовать как Mandatory, так и значение по умолчанию для одного и того же параметра. Почему бы нет? Если у Param есть атрибут Mandatory`, командлет запросит у пользователя значение, если оно не указано.

Если вы хотите использовать значение по умолчанию, укажите его следующим образом:

function Verb-Noun
{
    Param
    (
        # Param1 help description        
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]        
        $Param1 = 'default'
    )
   "value of `$param1` is $Param1"
}

Если выполняется так

>Verb-Noun -Param1 a
value of $param1 is a

Но если пользователь не предоставляет значение для параметра, будет использоваться значение по умолчанию.

Verb-Noun
value of $param1 is default

Теперь, если мы добавим атрибут Mandatory следующим образом ...


Param
    (
        # Param1 help description
        [Parameter(Mandatory=$true)]   
        [ValidateNotNull()]
        [ValidateNotNullOrEmpty()]        
        $Param1 = 'default'
    )
#rest of code...

Когда пользователь не сможет предоставить значение для Param1, пользователю предлагается ввести значение. Нет возможности использовать значение по умолчанию.

Verb-Noun 
cmdlet Verb-Noun at command pipeline position 1
Supply values for the following parameters:
Param1: 
#function pauses and won't run until a value is provided
...