繁体   English   中英

如果在调用函数时没有指定布尔参数,那么在Powershell中是否有一种方法可以自动为真?

[英]Is there a way in Powershell for a boolean parameter to automatically be true if not specified when the function is called?

如果该函数被称为myFunc -IsLightOn $true ,则它应该不返回任何内容。 myFunc - IsLightOn $False应该返回“Light off”。 但是,不为IsLightOn参数指定true或false应该将变量默认为true,因此不返回任何内容

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

当指定值但是我不知道如何将IsLightOn默认为true时,一切都有效。

正如其他人所说,Switch参数类型可能就是你想要的。 但是,通常,交换机用于指定非默认行为(因此,如果未提供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" }  
}

您正在寻找的是[switch]类型:

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

    if (-not $On.IsPresent) {
        'Light off'
    }
}

在param中使用默认值,如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM