如何在 PowerShell 函式中使用 ValidateSet 屬性?


PowerShell 函式中的 ValidateSet 屬性用於驗證從集合中輸入的值,這意味著它只允許從集合中獲取特定值。為更好的理解,請考慮下面的示例,我們有一個數組,我們需要檢查輸入的值是否在陣列中,如果是,我們將使用以下程式碼。

Function PetAnimalsCheck {
   param(
      [String]$Animal
   )
   $Animals = "Cow","Dog","Cat","Horse","Camel","Elephant"
   if($Animals -contains $Animal) {
      Write-Output "Animal is in the list of Pet Animals"
   } else {
      Write-Output "Animal is not Pet Animal"
   }
}

輸出

PS C:\> PetAnimalsCheck -Animal Dog
Animal is in the list of Pet Animals
PS C:\> PetAnimalsCheck -Animal Tiger
Animal is not Pet Animal

如果我們使用 ValidateSet 屬性替換上述命令,程式碼將只有幾行。

Function PetAnimalsCheck {
   param(
      [ValidateSet("Cow","Dog","Cat","Horse","Camel","Elephant",ErrorMessage="Ani
      mal Name is not among list")]
      [String]$Animal
   )
   Write-Output "Animal is Pet Animal"
}

輸出

PS C:\> PetAnimalsCheck -Animal Tiger
PetAnimalsCheck: Cannot validate argument on parameter 'Animal'. Animal Name is not among list
PS C:\> PetAnimalsCheck -Animal Cat
Animal is Pet Animal

如果您需要集合區分大小寫,請使用 IgnoreCase 值。

Function PetAnimalsCheck {
   param(
      [ValidatepathExi]
      [ValidateSet("Cow","Dog","Cat","Horse","Camel","Elephant",ErrorMessage="Ani
      mal Name is not among list or case sensitive", IgnoreCase=$false)]
      [String]$Animal
   )
   Write-Output "Animal is Pet Animal"
}

輸出

PS C:\> PetAnimalsCheck -Animal cat
PetAnimalsCheck: Cannot validate argument on parameter 'Animal'. Animal Name is not among list or case sensitive
PS C:\> PetAnimalsCheck -Animal Cat
Animal is Pet Animal

更新於: 19-Sep-2020

4K+ 瀏覽量

開啟職業生涯

完成課程以獲得認證

開始
廣告
© . All rights reserved.