簡體   English   中英

如何在Powershell中將switch參數標記為必需

[英]How to mark a switch parameter as mandatory in Powershell

我很確定除了我發現的東西之外我沒有任何其他選擇,但我想選擇集體的互聯網大腦。

在將布爾值傳遞給自定義函數時,我更喜歡使用[switch]參數。 但是,我有幾種情況需要將switch參數標記為必需。 這可以通過參數的[parameter(Mandatory = $ true)]選擇性地完成。 但是,我真的不喜歡出現的UI提示。 我更喜歡拋出異常。

但是,一個開關可以是true或false,而“IsPresent”屬性沒有區別。 如果我將switch參數傳遞為-example:$ false ,則交換機報告$ example.IsPresent為false

我已經使用了[bool]。 例如:

param
(
   [bool]$theValue = $(throw('You didn't specify the value!'))
);

我還有其他技巧嗎?

在某種程度上, switch參數始終是必需的。 如果未指定它,則其值為false。 如果指定它( -var ),則獲取值true,如果指定值( -var:$false ),則獲取指定的值。

我真的不能想到必須指定一個開關的情況。 如果您未指定,則為false。 就那么簡單。

我想你想要的是具體提到param的價值是真還是假? 如果是這種情況,你提到的bool版本就是我想要的,盡管它也與switch一樣:

param([switch]$a  = $(throw "You didn't specify the value"))

還有關於$example.IsPresent - 我知道它不直觀/壞,但它與switch變量本身的值相同。 這就是如何定義Switch Paramater的構造函數,它唯一的屬性是IsPresent

創建一個新的SwitchParameter對象,該對象包含一個布爾值,用於標識交換機是否存在。

http://msdn.microsoft.com/en-us/library/system.management.automation.switchparameter.ctor%28v=vs.85%29.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM