2017-09-26 77 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!"