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"
奇怪的行为是每次我执行它:
- 它不执行验证,因此它接受
Name
超过 10 个字符的参数。
- 每次我执行它时,它都会创建并更新一个名为
10
的文件,没有任何扩展名。
我的脚本有什么问题以及如何在 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!"
我创建了一个非常简单的 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"
奇怪的行为是每次我执行它:
- 它不执行验证,因此它接受
Name
超过 10 个字符的参数。 - 每次我执行它时,它都会创建并更新一个名为
10
的文件,没有任何扩展名。
我的脚本有什么问题以及如何在 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!"