2017-09-26 1 views
0

Ich habe ein sehr einfaches HelloWorld.ps1 Power-Shell-Skript erstellt, das einen Name Parameter akzeptiert, seine Länge überprüft und dann beispielsweise eine Hello-Nachricht ausgibt Wenn Sie John als Name übergeben, soll es drucken.Powershell String Length Validation - Das Skript überprüft die Eingabe nicht, erstellt aber bei jeder Ausführung eine Datei.

Aber das seltsame Verhalten ist jedes Mal, wenn ich es aus:

  • Es Gültigkeitsprüfung nicht durchführen, so dass es Name Parameter länger als 10 Zeichen akzeptiert.
  • Jedes Mal, wenn ich es ausführe, erstellt und aktualisiert es eine Datei mit dem Namen 10 ohne Erweiterung.

Hier ist der Power-Shell-Skript:

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

Und hier ist der Befehl, um sie auszuführen:

.\HelloWorld.ps1 -Name "John" 

Was ist das Problem mit meinem Skript?

Antwort

3

Tatsächlich ist >output redirection operator und es sendet die Ausgabe des linken Operanden an die angegebene Datei im rechten Operanden.

Zum Beispiel $Name.Length > 10 wird Länge von Name in einer Datei mit dem Namen 10 ausgeben.

Wie kann ich die Stringlänge überprüfen?

können Sie -gt verwenden, die greater than operator diese Art und Weise ist:

if($Name.Length -gt 10) 

bessere Option für String Parameter Länge Validation

Sie [ValidateLength(int minLength, int maxlength)] schreiben diese Art und Weise verwenden können:

param (
    [ValidateLength(1,10)] 
    [parameter(Mandatory=$true)] 
    [string] 
    $Name 
) 
Write-Host "Hello $Name!" 
Verwandte Themen