Powershell, wie die Anzahl der Argumente gezählt wird

7

Ich habe ein .ps1 Powershell-Skript geschrieben und ich habe mich gefragt, wie ich herausfinden würde, wie viele Argumente der Benutzer übergeben hat. Zum Beispiel muss mein Programm eine Zeichenfolge in mehreren Dateien überprüfen. Also sollte der Benutzer in der Lage sein

einzugeben

./Script "a" ex1.txt oder

./Script "a" ex1.txt ex2.txt

Ich weiß, in bash können wir $# verwenden. Aber wie kann ich Powershell einchecken? Danke

    
user2569803 18.03.2014, 20:39
quelle

3 Antworten

11

Innerhalb eines Skripts oder einer Funktion können Sie auf die Argumente zugreifen, die über die automatisch aufgefüllte Variable $args übergeben wurden. Das $args ist ein Array, so dass Sie die Anzahl der Argumente finden können, die über seine Eigenschaft Count übergeben werden.

Ein Beispiel:

%Vor%

Aufruf von PrintArgs :

%Vor%     
Peter 18.03.2014, 20:45
quelle
6

Lesen Sie einige Hilfedateien , wenn Sie Zeit haben; Sie sind im Allgemeinen sehr hilfreich!

%Vor%

Hinweise von der Hilfe, die Ihnen helfen sollte:

  

$ Args

     

Enthält ein Array der nicht deklarierten Parameter und / oder Parameter          Werte, die an eine Funktion, ein Skript oder einen Skriptblock übergeben werden.          Wenn Sie eine Funktion erstellen, können Sie die Parameter mithilfe der Funktion "          param Schlüsselwort oder durch Hinzufügen einer durch Kommas getrennten Liste von Parametern in          Klammern nach dem Funktionsnamen.

     

In einer Ereignisaktion enthält die Variable $ Args Objekte, die repräsentieren          die Ereignisargumente des Ereignisses, das verarbeitet wird. Diese Variable          wird nur innerhalb des Aktionsblocks einer Ereignisregistrierung ausgefüllt          Befehl. Der Wert dieser Variable kann auch in den SourceArgs gefunden werden          Eigenschaft des PSEventArgs-Objekts (System.Management.Automation.PSEventArgs)          dass Get-Event zurückgibt.

     

$ PSBoundParameters

     

Enthält ein Wörterbuch der Parameter, die an ein Skript übergeben werden          oder Funktion und ihre aktuellen Werte. Diese Variable hat nur einen Wert          in einem Bereich, in dem Parameter deklariert werden, z. B. ein Skript oder eine Funktion.          Sie können damit die aktuellen Werte von Parametern anzeigen oder ändern          oder um Parameterwerte an ein anderes Skript oder eine Funktion zu übergeben.

Wenn Sie sowohl gebundene Parameter als auch ungebundene Argumente verwenden, können Sie die beiden kombinieren ( Beispiel )

Etwas abseits des Themas:

Ich empfehle dringend, $ args zu verwenden. Sie sollten immer gebundene Parameter verwenden, es gibt sehr wenige Fälle, in denen Sie gezwungen sind, sie nicht zu verwenden.

Warum? Alle Funktionen, die Parameter verwenden, sollten den Best Practices folgen und den Parameter param () für Ihre Parameter verwenden. Wenn Sie Parameter in den Hilfedateien nachlesen, werden Sie feststellen, dass der param-Block Ihnen alle möglichen hilfreichen Funktionen wie Validierung, Erzwingen von obligatorischen Parametern, Annahme von Pipeline-Eingaben usw. bietet. Dies ist auch erforderlich, bevor Sie PowerShell überhaupt ausführen können mehr Arbeit für Sie mit [ cmdletbinding ()]

Prost!

    
Cookie Monster 19.03.2014 00:57
quelle
4

Sie verwenden das eingebaute $Args und die Eigenschaft Count dafür.

%Vor%

Das gibt Ihnen, wie viele Argumente der Benutzer an das Skript übergeben hat.

    
TheMadTechnician 18.03.2014 20:43
quelle

Tags und Links