Powershell字符串长度验证 - 脚本不验证输入,但在每次执行时创建一个文件
问题描述:
我创建了一个非常简单的HelloWorld.ps1
Power-shell脚本,它接受Name
参数,验证其长度,然后打印hello消息,例如如果您通过John
作为Name
,则应打印Hello John!
。Powershell字符串长度验证 - 脚本不验证输入,但在每次执行时创建一个文件
但奇怪的行为是每一次我执行它时:
- 它不执行验证,所以它接受超过10个字符
Name
参数。 - 每次执行它时,它都会创建并更新一个名为
10
的文件,而不会有任何扩展名。
下面是电源shell脚本:
param (
[parameter(Mandatory=$true)]
[string]
$Name
)
# Length Validation
if ($Name.Length > 10) {
Write-Host "Parameter should have at most 10 carachters."
Break
}
Write-Host "Hello $Name!"
这里是来执行它的命令:
.\HelloWorld.ps1 -Name "John"
什么是与我的脚本问题?
答
事实上>
是output redirection operator和它的左操作数的输出发送到在右操作数指定的文件。
例如,$Name.Length > 10
将在名为10
的文件中输出长度为Name
。
如何验证字符串长度?
您可以使用-gt
这是greater than operator这样:
if($Name.Length -gt 10)
更好的选项字符串参数长度验证
您可以使用[ValidateLength(int minLength, int maxlength)]
属性是这样的:
param (
[ValidateLength(1,10)]
[parameter(Mandatory=$true)]
[string]
$Name
)
Write-Host "Hello $Name!"