Powershell 验证输入

Powershell validate input

我正在尝试验证 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")

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

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

试试这个:

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")