解釋 PowerShell 高階函式中的 AllowEmptyString() 和 AllowEmptyCollection()。


AllowEmptyString() 屬性用於字串變數,AllowEmptyCollection() 用於不同資料型別的陣列(集合)。

請看下面的示例。此處,我們使用的是一個必填變數 $name(是一個字串)和 $stringarray(是一個字串陣列)。

function print_String{
   [cmdletbinding()]
   param(
      [parameter(Mandatory=$True)]
      [string]$name,
   )
   Write-Output "Writing a single string"
   $name
}

如果我們獲取以上變數的輸出,會生成以下錯誤。

PS C:\WINDOWS\system32> print_String
cmdlet print_String at command pipeline position 1
Supply values for the following parameters:
name:
print_String : Cannot bind argument to parameter 'name' because it is an empty
string.
At line:1 char:1
+ print_String
+ ~~~~~~~~~~~~
   + CategoryInfo             : InvalidData: (:) [print_String], ParameterBindin
g
   ValidationException
      + FullyQualifiedErrorId : ParameterArgumentValidationErrorEmptyStringNotAl
l
   owed,print_String

如你在以上輸出中看到的,該指令碼不接受空字串。若要允許空字串,你需要使用 AllowEmptyString() 引數,這樣錯誤就不會被生成。

function print_String{
   [cmdletbinding()]
   param(
      [parameter(Mandatory=$True)]
      [AllowEmptyString()]
      [string]$name
   )
   Write-Output "Writing a single string"
   $name
}

輸出 

PS C:\WINDOWS\system32> print_String
cmdlet print_String at command pipeline position 1
Supply values for the following parameters:
name:
Writing a single string

在以上示例中,你可以看到在你添加了 AllowEmptyString() 引數後,該程式接受了空字串。類似地,當你新增 AllowEmptyCollection() 引數後,PowerShell 將接受陣列的空值。

function print_String{
   [cmdletbinding()]
   param(
      [parameter(Mandatory=$True)]
      [AllowEmptyCollection()]
      [string[]]$stringarray
   )
   Write-Output "Writing a string array"
   $stringarray
}

輸出

PS C:\WINDOWS\system32> print_String
cmdlet print_String at command pipeline position 1
Supply values for the following parameters:
stringarray[0]:
Writing a string array

更新於:04-5 月-2020

4K+ 次瀏覽

啟動您的 職業

完成課程即可獲得認證

開始
廣告