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
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
:
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!
Sie verwenden das eingebaute $Args
und die Eigenschaft Count
dafür.
Das gibt Ihnen, wie viele Argumente der Benutzer an das Skript übergeben hat.
Tags und Links arguments scripting powershell