解釋 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
廣告