Powershell字符串长度验证 - 脚本不验证输入,但在每次执行时创建文件

时间:2017-09-26 08:14:51

标签: powershell cmdlets cmdlet

我创建了一个非常简单的HelloWorld.ps1 Power-shell脚本,该脚本接受Name参数,验证其长度,然后打印一个问候消息,例如,如果您将John传递给{{{ 1}},它应该打印Name

但每次执行它时都会出现奇怪的行为:

  • 它不执行验证,因此它接受超过10个字符的Hello John!个参数。
  • 每次执行时,它都会创建并更新名为Name的文件,不带任何扩展名。

这是Power-shell脚本:

10

以下是执行它的命令:

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!"

我的剧本有什么问题?

1 个答案:

答案 0 :(得分:5)

实际上>output redirection operator,它将左操作数的输出发送到右操作数中的指定文件。

例如,.\HelloWorld.ps1 -Name "John" 会在名为$Name.Length > 10的文件中输出Name的长度。

如何验证字符串长度?

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

10

字符串参数长度验证的更好选项

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

if($Name.Length -gt 10)