Powershell 字符串长度验证

Powershell String Length Validation

我创建了一个非常简单的 HelloWorld.ps1 Power-shell 脚本,它接受一个 Name 参数,验证它的长度然后打印一条问候消息,例如如果你传递 John 作为 Name,它应该打印 Hello John!.

这是 Power-shell 脚本:

param (
    [parameter(Mandatory=$true)]
    [string]
    $Name
)
# Length Validation
if ($Name.Length > 10) {
    Write-Host "Parameter should have at most 10 characters."
    Break
}
Write-Host "Hello $Name!"

这是执行它的命令:

.\HelloWorld.ps1 -Name "John"

奇怪的行为是每次我执行它:

我的脚本有什么问题以及如何在 PowerShell 中验证字符串长度?

问题 - 使用了错误的运算符

使用错误的运算符是 PowerShell 中的常见错误。实际上 > is output redirection operator 并且它将左操作数的输出发送到右操作数中的指定文件。

例如 $Name.Length > 10 将在名为 10.

的文件中输出 Name 的长度

如何验证字符串长度?

您可以这样使用-gt which is greater than operator

if($Name.Length -gt 10)

使用 ValidateLength 属性进行字符串长度验证

您可以这样使用 [ValidateLength(int minLength, int maxlength)] 属性:

param (
    [ValidateLength(1,10)]
    [parameter(Mandatory=$true)]
    [string]
    $Name
)
Write-Host "Hello $Name!"