2017-09-26 72 views
0

我创建了一个非常简单的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" 

什么是与我的脚本问题?

回答

3

事实上>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!"