Powershell验证输入

时间:2016-02-18 13:27:35

标签: validation powershell match limit

我试图在PowerShell中验证一些输入。 用户应输入新AD用户的用户名。应该对任何无效字符(例如!,$,;等)验证此用户名。 有效字符是a-z(上部和下部),0-9,_, - 和

感谢您的帮助。

目前我的代码看起来像这样:

do{

    $input="notok"
    # Eingabe es Usernamen
    Write-Host "Bite den Usernamen eingeben"
    $Username = Read-Host


    if ($Username -notmatch "[a-zA-Z0-9_.-]") {
        Write-Host ""
        Write-Host "ACHTUNG: Benutzer $Username enthaelt ungueltige Zeichen (nur a-z, A-Z, 0-9, ., - und _ erlaubt), bitte die Eingabe wiederholen" -ForegroundColor Red
        Write-Host ""
        $input="notok"

    }else{

        $input="ok"

    }

}while($input -ne "ok")

2 个答案:

答案 0 :(得分:2)

您可以使用参数,并使用内置参数验证:

Param(
  [Parameter(Mandatory=$false,ValueFromPipeline=$true)] 
  [ValidateScript({$_-match "^[a-zA-Z0-9_\-,]+$"})] 
  [String]
  $Username
)

答案 1 :(得分:0)

试试这个:

do{

    $input="notok"
    # Eingabe es Usernamen
    Write-Host "Bite den Usernamen eingeben"
    $Username = Read-Host


    if ($Username -notmatch "^[a-z0-9_.-]*$") {
        Write-Host ""
        Write-Host "ACHTUNG: Benutzer $Username enthaelt ungueltige Zeichen (nur a-z, A-Z, 0-9, ., - und _ erlaubt), bitte die Eingabe wiederholen" -ForegroundColor Red
        Write-Host ""
        $input="notok"

    }else{

        $input="ok"

    }

}while($input -ne "ok")