簡體   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