解释 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+ 次浏览

启动您的 职业

完成课程即可获得认证

开始
广告