Есть ли в Powershell способ для логического параметра автоматически принимать значение true, если он не указан при вызове функции? - PullRequest
1 голос
/ 24 июня 2019

Если функция вызывается myFunc -IsLightOn $true, она ничего не должна возвращать. myFunc - IsLightOn $False должен вернуть «Light off». Однако, если не указать true или false для параметра IsLightOn, то по умолчанию переменная должна иметь значение true и, следовательно, ничего не возвращать

function myFunc{
   Param(
    [bool]$IsLightOn
   ) if ($LightIsOn -EQ $false){
      Write-Host "Light off"
   }
}

Все работает, когда указано значение, но я не знаю, как по умолчанию IsLightOn установить в true.

Ответы [ 3 ]

2 голосов
/ 24 июня 2019

Как уже говорили другие, тип параметра Switch, вероятно, то, что вам нужно. Однако, как правило, параметр используется для указания поведения, отличного от заданного по умолчанию (поэтому значение по умолчанию равно $ false, если параметр переключателя не указан). Таким образом, вы можете сделать что-то похожее на то, что TheIncorrigible1 сказал:

function Set-LightStatus {
    param(
        [switch] $Off
     )

    if ($Off) {
        'Light off'
    }  
}

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

function myFunc {
  param(
    [bool]$IsLightOn = $true
)
  if ($IsLightOn -EQ $false){ Write-Host "Light off" }  
}
1 голос
/ 24 июня 2019

Вы ищете тип [switch]:

function Set-LightStatus {
    param(
        [switch] $On
    )

    if (-not $On.IsPresent) {
        'Light off'
    }
}
0 голосов
/ 25 июня 2019

Использовать значение по умолчанию в параметре, например:

function myFunc{
    Param(
        [bool]$IsLightOn=$true # Default value
    ) 

    if (!$IsLightOn) { # CHECKING THE VALUE
        Write-Host "Light off" # PRINTING ON THE HOST
    } # END OF IF

} # END OF FUNCTION

myFunc # WITHOUT PASSING VALUE
myFunc -IsLightOn:$true # PASSING TRUE VALUE
myFunc -IsLightOn:$false # PASSING FALSE VALUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...