PowerShell-Parameter: Syntax, Typen, Attribute, Argumente und Beispiele
PowerShell-Skriptentwickler verwenden den Powershell-Param-Block, um Parameter zu erweiterten Funktionen hinzuzufügen. Jeder, der die Funktion ausführt, kann auf Parameter zugreifen, die mit PowerShell Param hinzugefügt wurden.
Zusätzlich zu den Parametern, die einer Funktion mit dem Param -Block hinzugefügt werden, fügt Windows PowerShell automatisch Common Parameters hinzu.
Dieses Handbuch behandelt die Syntax von Powershell Param, Typen von Powershell-Parametern, ihre Attribute und Argumente. Es enthält auch einige Beispiele für die Verwendung des Param-Blocks zum Hinzufügen von Parametern zu einem Skript oder einer Funktion.
Post-Themen durchsuchen
- Syntax eines PowerShell-Param-Blocks
- Arten von PowerShell-Parametern
- PowerShell-Param-Parameterattribute und -argumente
- So definieren Sie einen PowerShell-Parameter in mehreren Parametersätzen
- Beispiele für PowerShell-Parameter
- ParameterSetName PowerShell-Param-Beispiel
- Beispiele für CmdletBinding-Attribute und DefaultParameterSetName-Argumente
- Beispiel für einen FolderPath-String-Parameter
- Parameterbeispiel für DisplayResult, ExportTxt und ExportCSV Switch
- So verwenden Sie PowerShell-Parameter in einer PowerShell-Funktion
- Testen meiner PowerShell-Parameter in der PowerShell-Funktion
- Referenzen und weiterführende Literatur
Syntax eines PowerShell-Param-Blocks
Die Syntax von PowerShell Param ist…
|_+_|
Um einen Parameter zu einer Funktion hinzuzufügen, beginnen Sie mit dem Wort halt , gefolgt vom Parameterblock, (). Hier ist eine einfache Form eines Param-Blocks …
|_+_| Der CmdletBinding Das Attribut ist optional und das einzige Attribut, das außerhalb des param-Blocks definiert ist. Mehr dazu später in der AnleitungInnerhalb des Param-Blocks – param () – definieren Sie die Parameterattribute und ihre Argumente. Außerdem wird ein Parameterattribut in einen [()]-Block eingeschlossen.
Im obigen Syntaxcode habe ich alle Parameterargumente fett gedruckt. Es gibt noch viel mehr Parameterargumente – die in der Syntax dienen nur der Veranschaulichung und sind in keiner Weise erschöpfend.
Innerhalb des Parameterblocks definieren Sie durch Kommas getrennte Parameterargumente. Ein Beispiel für ein PowerShell-Param-Attribut ist die Parameter Attribut.
Außerdem ist ein Beispiel für ein param-Argument das verpflichtend Streit. Ein weiteres Beispiel für ein param-Argument ist Parametersatzname .
Abschließend definieren Sie den Namen des Parameters. Außerdem geben Sie den Datentyp des Parameters an.
Im nächsten Abschnitt werde ich die gängigen Typen von PowerShell-Parametern diskutieren. Abschnitt drei behandelt dann gemeinsame Parameterattribute und ihre Argumente.
Schließlich werde ich im letzten Abschnitt dieses Handbuchs ein reales SysAdmin-Beispiel eines PowerShell-Parameters geben. Der Abschnitt enthält auch Beispiele für die Verwendung des Param-Blocks in einer erweiterten Funktion.
Arten von PowerShell-Parametern
Die gängigsten Arten von Parametern, die Sie einstellen können, sind Schnur oder schalten Parameter. Darüber hinaus können Sie auch definieren int , bool , Terminzeit oder char-Parametertypen.
wie man live nfl auf kodi sieht
In diesem Abschnitt werde ich einige dieser Arten von Parametern erklären. Ich werde auch einige Beispiele geben, wie man sie in einem Param-Block definiert.
PowerShell-Param Schnur Parameter
Wenn Sie PowerShell-Parameter erstellen, erstellen Sie wahrscheinlich eine Schnur Parameter. EIN Schnur Der Parameter akzeptiert einen beliebigen Zeichenfolgenwert.
In Windows PowerShell kann eine Zeichenfolge Zahlen, Wörter oder Zeichen sein. Insbesondere ist alles, was Sie in einem doppelten oder einfachen Anführungszeichen deklarieren, ein String.
In PowerShell ist der Objekttyp einer Zeichenfolge System.String .
Um einen PowerShell-Parameter als Zeichenfolgenparameter zu deklarieren, schließen Sie vor dem Namen des Parameters das Wort ein Schnur in Klammern. Hier ist ein Beispiel…
|_+_|PowerShell-Param int Parameter
Ein int Der Datentyp ist eine 32-Bit-Ganzzahl mit Vorzeichen. Auf Englisch, ein int ist eine Zahl, zum Beispiel 1, 2 oder 3.
Im Gegensatz zu einem Schnur Parameter-Datentyp, der jede Art von Daten annehmen kann, an int Parameter ist sehr präskriptiv.
Wenn Sie ein definieren int Parameter kann der Parameter nur Zahlen akzeptieren. Wenn Sie außerdem Wörter als Wert für die eingeben int -Parameter gibt PowerShell eine Fehlermeldung aus.
Bevor ich Ihnen zeige, wie Sie einen PowerShell-Param definieren int Parameter, hier ist ein allgemeines Beispiel, wie man einen int-Datentyp definiert…
|_+_|Wenn ich den Code in PowerShell ausführe, wird er zurückgegeben 123 .
Im Gegenteil, wenn ich 123 durch this is a int ersetze, gibt PowerShell eine Fehlermeldung aus.
|_+_|
Jetzt, wo Sie eine hatten int Datentyp-Crashkurs, um eine PowerShell Param int Parameter namens Nummer, hier ist der Code…
|_+_|Dadurch werden die Benutzer Ihres Skripts oder Ihrer Funktion gezwungen, den richtigen Datentyp bereitzustellen.
PowerShell-Param Terminzeit Parameter
Wie ein int Parameter, a Terminzeit Parameter ist auch sehr präskriptiv für die Art der Eingabe, die er akzeptiert. Wie der Name schon sagt, die Terminzeit Der Parameter akzeptiert nur Eingaben im Datums- und Zeitformat.
Wenn Sie einen PowerShell-Parameter definieren möchten, der nur Datumsangaben akzeptiert, verwenden Sie den folgenden Beispielcode…
|_+_|In diesem Beispiel Datum eingeben ist der Name des Parameters. Zusätzlich, Terminzeit definiert den Datentyp.
PowerShell-Param Schalten Parameter
In den ersten drei Unterabschnitten dieses Abschnitts habe ich PowerShell-Parametertypen besprochen, die eine Benutzereingabe erfordern.
Es gibt jedoch einen PowerShell-Parametertyp, der keine Benutzereingabe erfordert. Im Gegensatz zu den anderen Arten von Parametern a schalten Der Parameter erfordert keine Benutzereingabe.
Die Art und Weise, wie Sie a definieren schalten -Parameter ähnelt der Art und Weise, wie Sie andere Arten von Parametern definieren. Allerdings anstelle von schalten , int , oder Terminzeit , benutze das Wort schalten .
Zum Beispiel, um einen PowerShell-Parameter zu definieren Schalten Parameter, CSV exportieren , verwenden Sie den folgenden Code…
|_+_|Schließlich fragen Sie sich in diesem Abschnitt vielleicht über die Anwendung von schalten Parameter. Denken Sie an ein PowerShell-Skript oder eine Funktion, die Ergebnisse auf der PowerShell-Konsole anzeigen kann.
Sie können dem Benutzer auch die Möglichkeit geben, das Ergebnis entweder in eine Textdatei oder eine CSV-Datei zu exportieren.
Eine Möglichkeit, die Funktion zu codieren, besteht darin, 3 Schalterparameter zu erstellen. Ein Benutzer kann dann einen der Parameter auswählen, je nachdem, wie die Funktion das Ergebnis liefern soll.
Dieser Parametertyp erfordert keine Eingabe durch den Benutzer. Durch einfaches Auswählen des Parameters zeigt die Funktion die Ausgabe entsprechend an.
Sie können auch andere PowerShell-Parameter mit bestimmten Datentypen definieren. Um mehr über PowerShell-Datentypen zu erfahren, besuchen Sie diesen Link – So definieren Sie PowerShell-Datentypen .PowerShell-Param-Parameterattribute und -argumente
In der PowerShell-Param-Syntax dieses Handbuchs habe ich angedeutet, dass ein PowerShell-Parameter Attribute hat. Darüber hinaus habe ich auch darauf hingewiesen, dass jedes Parameterattribut auch Argumente hat.
In diesem Abschnitt werde ich Parameterattribute und ihre Argumente diskutieren.
Um Parameterattribute und ihre Argumente zu erläutern, beziehe ich mich auf die im ersten Abschnitt dieses Handbuchs eingeführte Syntax von PowerShell param.
|_+_|PowerShell-Param CmdletBinding Attribut
Der CmdletBinding Das Attribut wird normalerweise vor dem param-Block angegeben. Wenn Sie die definieren CmdletBinding -Attribut erkennt PowerShell das Skript als erweiterte Funktion.
Im Syntaxabschnitt dieses Handbuchs habe ich diesen Code als vereinfachte Version eines Param-Blocks verwendet.
|_+_|In diesem Abschnitt konzentriere ich mich auf die CmdletBinding Attribut Teil des Codes. So definieren Sie die Attribut …
|_+_|In den nächsten 3 Unterabschnitten werde ich einige der gängigen Argumente besprechen, die Sie in definieren können CmdletBinding Attribut.
Zur Vermeidung von Zweifeln müssen Sie alle definieren Argumente innerhalb des () Blocks der Attribut . Außerdem MÜSSEN Sie alle Attribute mit Ausnahme des letzten durch ein Komma (,) trennen Argumente innerhalb des Attribut .
PowerShell-Param DefaultParameterSetName Streit
Wenn Sie eine PowerShell-Funktion entwickeln, kann diese mehrere Parameter enthalten, die ein Benutzer im selben Befehl verwenden kann. Darüber hinaus kann dieselbe PowerShell-Funktion einen weiteren Satz von Parametern enthalten, die ein Benutzer in einem anderen Befehl verwenden kann.
Der Benutzer kann jedoch die Parameter im ersten Satz nicht mit den Parametern im zweiten Satz mischen.
Darüber hinaus definiert ein Funktionsentwickler alle Parameter, die ein Benutzer im selben Befehl mit verwenden kann Parametersatzname Streit. Der Parametersatzname Argument wird innerhalb des Parameterattributs definiert (mehr dazu im nächsten Abschnitt).
Unterschiedliche Sätze gruppierter Parameter implizieren, dass Sie unterschiedliche haben werden Parametersatzname S.
Mit unterschiedlichen Parametersatzname s in Ihrem param-Block definiert ist, können Sie sich entscheiden, einen der zu definieren Parametersatzname s als Standard. Hier verwenden Sie die DefaultParameterSetName Streit.
Der DefaultParameterSetName Das Argument wird innerhalb der definiert CmdletBinding Attributblock. Hier ist ein Beispiel…
|_+_|Um unser PowerShell-Param-Block-Format beizubehalten, werde ich den Param-Block unten wieder einführen…
|_+_|PowerShell-Param UnterstütztShouldProcess Streit
Dies ist ein weiteres Argument, das Sie in der definieren können CmdletBinding Attribut . Wie DefaultParameterSetName Argument, die UnterstütztShouldProcess Das Argument ist optional.
Der UnterstütztShouldProcess Argument fügt hinzu Bestätigen Sie und Was ist, wenn gemeinsame Parameter für die Funktion.
Um dieses Argument hinzuzufügen, fügen Sie ein Komma (,) am Ende von hinzu DefaultParameterSetName Streit. Fügen Sie dann die Zeile hinzu – UnterstütztShouldProcess = $wahr oder $falsch.
Mit diesem neuen Argument enthalten, die CmdletBinding Attribut sieht jetzt so aus…
|_+_|PowerShell-Param HilfeURI Streit
Wenn Sie mit der PowerShell vertraut sind Hilfe bekommen Cmdlet, Sie sind vielleicht schon darauf gestoßen Online Parameter. Wenn du rennst Hilfe bekommen mit dem Online -Parameter öffnet PowerShell die Online-Hilfeseite des Cmdlets.
Um beispielsweise die Online-Hilfeseite des Out-File-Cmdlets zu öffnen, führen Sie den folgenden Befehl aus…
|_+_|Die durch diesen Befehl geöffnete Seite wird in einer Funktion von definiert HilfeURI Streit. Wenn Sie also möchten, dass Benutzer auf die Online-Hilfeseite Ihrer Funktion zugreifen, definieren Sie die HilfeURI Streit.
Hier ist ein Beispiel…
|_+_|Dieses letzte Argument werde ich nun in die einbeziehen CmdletBinding Attribut . Hier ist der aktualisierte Code…
|_+_|PowerShell-Param Parameter Attribut
In der PowerShell-Param CmdletBinding Im Unterabschnitt Attribut habe ich 3 Argumente besprochen, die Sie in die einschließen können CmdletBinding Attributblock.
Wie Sie gesehen haben, ist die CmdletBinding Der Attributblock ist das einzige Attribut, das außerhalb des Parameterblocks definiert ist.
In diesem Unterabschnitt lernen Sie das Parameterattribut kennen. Außerdem erfahren Sie mehr über die allgemeinen Argumente, die Sie diesem Attribut hinzufügen können.
Wie Sie vielleicht aus den bereits in diesem Handbuch verwendeten Beispielen gefolgert haben, definiert das Parameterattribut Argumente, die das Verhalten eines PowerShell-Param-Parameters steuern.
Sie können das Parameterattribut definieren, indem Sie das Wort Parameter gefolgt von ()-Klammern in einen []-Block einschließen. Hier ist ein Beispiel…
|_+_|Weiter MÜSSEN Sie alle Argumente des Parameterattributs innerhalb des ()-Blocks definieren.
In den folgenden Unterabschnitten des Abschnitts PowerShell-Param-Parameterattribut werde ich die allgemeinen Argumente vorstellen und erläutern, die Sie innerhalb des Parameterattributs definieren können.
PowerShell-Param Parametersatzname Streit
Als ich es erklärte DefaultParameterSetName weiter oben in diesem Handbuch habe ich eingeführt Parametersatzname Streit. Sie können dieses Argument zum Stapeln oder Gruppieren von Parametern verwenden, die ein Benutzer im selben Befehl ausführen kann.
Um beispielsweise a zu definieren Parametersatzname namens Parametersatzname1 , geben Sie den folgenden Code in den Block Parameterattribut () ein.
|_+_|Wenn ich diesen aktualisierten Code einführe, sieht der Param-Block meines Beispielcodes jetzt so aus.
|_+_|Wenn ich die zurückbringe CmdletBinding -Attribut sieht mein Beispiel-PowerShell-Param-Code jetzt so aus …
|_+_|PowerShell-Param Verpflichtend Streit
Du kannst den ... benutzen Verpflichtend Argument, um zu definieren, ob ein Parameter erforderlich oder optional ist. Der Verpflichtend Argument akzeptiert einen $true- oder $false-Wert – $true bedeutet erforderlich, $false, nicht erforderlich.
Außerdem die Verpflichtend Argument ist optional. Wenn dieses Argument jedoch nicht definiert ist, wird der Parameter als optional behandelt.
Um die zu definieren Verpflichtend Argument, fügen Sie den folgenden Code zum Parameterattributblock hinzu…
|_+_|Schließlich, wenn ich die einbeziehe Verpflichtend Argumentcode zu meinem PowerShell-Paramcode, ich werde jetzt haben ...
|_+_|PowerShell-Param Position Streit
Der Position Das Argument des Parameterattributs definiert die Position des Parameters. Der Wert ist eine Ganzzahl, beginnend bei 0 (Null).
Der Vorteil der Position Das Argument soll es Benutzern ermöglichen, die Funktion unter Verwendung der Position der Parameter auszuführen. Insbesondere, wenn Sie die definieren Position Argument kann ein Benutzer Werte für jeden Parameter in der Befehlszeile eingeben, ohne den Parameter anzugeben.
PowerShell weist dann jeden Wert in der Befehlszeile entsprechend der Parameterposition zu.
Zum Beispiel die Get-ChildItem Cmdlet hat einen Parameter namens Weg (mit Position 0). Das Cmdlet hat auch einen weiteren Parameter, Filter (mit Position 1).
Standardmäßig, wenn ich die Get-ChildItem Befehl muss ich die Parameternamen einschließen, bevor ich ihre Werte hinzufüge. Siehe den Befehl unten…
|_+_|In diesem Befehl habe ich die Parameter aufgerufen und dann ihre Werte angegeben.
Da ich jedoch die Positionen dieser 2 Parameter kenne, kann ich Werte an ihren Positionen hinzufügen, ohne die Parameter ausdrücklich aufzurufen. Ich werde dann meinen Befehl wie unten gezeigt ändern ...
|_+_|Das spart mir natürlich Zeit! Wenn Sie sich jedoch einen langen PowerShell-Code ansehen, kann dies zu Verwirrung führen.
Der Befehl liefert das gleiche Ergebnis in PowerShell…
PowerShell weist die Werte in den Positionen automatisch den Parametern basierend auf deren zu Position Streit.
Fahren Sie fort, hier ist, wie Sie die definieren Position Streit…
|_+_| In diesem Beispiel ist meine Parameterposition 0 (Null). Wenn ich meinen nächsten Parameter definiere, steht er an Position 1 und so weiter. Sie können nicht zwei Parameter an derselben Position haben. Später in diesem Handbuch erfahren Sie, wie Sie einen Parameter an derselben Position, aber mit unterschiedlichen ParameterSetNames hinzufügen.Ich werde dieses Argument jetzt zu meinem Beispielcode hinzufügen…
|_+_|PowerShell-Param ValueFromPipeline Streit
Eine weitere häufig verwendete Parametererweiterung ist die ValueFromPipeline Streit. Wie der Name schon sagt, bestimmt dieses Argument, ob ein Parameter Werte aus der Pipeline akzeptiert.
So definieren Sie dieses Argument …
|_+_|Wenn ich dieses neue Argument zu meinem Code hinzufüge, sieht es so aus …
|_+_|Es gibt ein weiteres Argument namens ValueFromPipelineByPropertyName . Um mehr über dieses Argument zu erfahren, besuchen Sie about_Functions_Advanced_Parameters .
PowerShell-Param Hilfenachricht Streit
Sie können dieses Argument verwenden, um die Nachricht anzugeben, mit der Benutzern gezeigt wird, wie ein Parameter verwendet wird. Um ein zu definieren Hilfenachricht Argument für einen Parameter, verwenden Sie einen ähnlichen Code wie den folgenden…
|_+_|Und hier ist nun mein aktualisierter Code…
|_+_|Bisher habe ich in diesem Abschnitt 2 PowerShell-Parameterattribute besprochen – CmdletBinding und Parameter . Darüber hinaus habe ich auch die allgemeinen Argumente besprochen, die Sie für diese Attribute definieren können.
In den verbleibenden 3 Unterabschnitten dieses Abschnitts werde ich Ihnen 3 häufiger verwendete PowerShell-Param-Attribute beibringen. Für diese 3 Attribute müssen Sie jedoch keine Argumente definieren.
PowerShell-Param Alias Attribut
Das Alias-Attribut wird verwendet, um die Aliase eines Parameters anzugeben. Wie Sie vielleicht schon erraten haben, kann anstelle des Parameters der Alias eines PowerShell-Parameters verwendet werden.
Bevor ich Ihnen zeige, wie Sie das Alias-Attribut für einen Parameter definieren, möchte ich Ihnen zunächst zeigen, wie Sie Aliase aller Cmdlets und Funktionen auf Ihrem Computer finden.
Führen Sie den folgenden Befehl aus, um alle Aliase für Cmdlets und Funktionen aufzulisten
|_+_|Dies listet alle Aliase auf…
Weiter zu Alias Attribut, um eines für einen PowerShell-Param-Parameter zu definieren, verwenden Sie einen ähnlichen Code wie den folgenden…
|_+_| In diesem Beispiel ist FP der Alias für den Parameter.Wenn ich dies zu meinem Code hinzufüge, sieht die aktualisierte Version so aus …
reddit wie man einen subreddit blockiert|_+_|
PowerShell-Param Unterstützt Wildcards Attribut
Dieses parameter param-Attribut bestimmt, ob ein Parameter Platzhalter akzeptiert. So definieren Sie dieses Attribut…
|_+_|PowerShell-Param ValidateNotNullOrEmpty Validierungsattribut
Wie die meisten bereits in diesem Handbuch behandelten Attribute verrät auch der Name dieses Attributs. Es ist ein Validierungsattribut.
Wenn Sie dieses Attribut definieren, akzeptiert der Parameter KEINEN Nullwert ($null). Außerdem akzeptiert es keinen leeren () Wert.
Wenn ein Benutzer $null oder eingibt, gibt die Funktion einen Fehler aus. Um dieses Attribut zu definieren, geben Sie den folgenden Code ein…
|_+_|Schließlich werde ich meinen Code mit den letzten 2 Attributen aktualisieren…
|_+_|PowerShell-Parameter Parametername
Nachdem Sie alle Attribute und Argumente eines Parameters definiert haben, müssen Sie den Parameternamen hinzufügen. Ein PowerShell-Param-Parameter wird wie eine Variable definiert – mit einem Dollarzeichen ($), gefolgt vom Namen des Parameters.
Sie können optional auch einen Datentyp für den Parameter eingeben. In Abschnitt 2 dieses Handbuchs habe ich verschiedene Arten von PowerShell-Parametern besprochen.
So definieren Sie einen Parameter, der akzeptiert werden kann Schnur Datentyp.
|_+_|Hier ist mein aktualisiertes Codebeispiel…
|_+_|So definieren Sie einen PowerShell-Parameter in mehreren Parametersätzen
Wenn Sie neu in der Programmierung von PowerShell-Funktionen sind, werden Sie wahrscheinlich der Versuchung erliegen, einen Parameter mehrmals zu definieren.
Ein Grund, warum Sie einen Parameter möglicherweise mehrfach haben möchten, ist, wenn ein Parameter in mehreren ParameterSetNames (mehrere Parametersätze) verwendet wird.
Nehmen wir an, Sie entwickeln eine PowerShell-Funktion, die über a verfügt Weg Parameter. Sie haben jedoch 2 ParameterSetNames, die den Path-Parameter erfordern.
Die meisten Leute, die neu in der PowerShell-Skripterstellung sind, werden wahrscheinlich die unten gezeigten Parameter definieren…
|_+_|Wenn Sie die Parameter wie oben gezeigt definieren, erhalten Sie eine Fehlermeldung. Um diese Theorie zu testen, kopiere ich den Code in PowerShell ISE .
Also, wie behebt man das? Die Lösung besteht darin, die 2 Parameterattribute und ihre Argumente zu definieren – einschließlich ihrer ParameterSetNames.
Definieren Sie dann am Ende beider Parameterattribute einen einzelnen Parameternamen, der beiden Parameterattributen gemeinsam ist. Im vorherigen Beispiel werde ich den ersten Parameternamen entfernen und den letzten beibehalten.
|_+_|Wenn ich diesen Code jetzt in PowerShell ISE kopiere, ist alles in Ordnung.
Windows 10 blaue Pfeile auf Symbolen
Beachten Sie in diesem Beispiel, dass die Parameterargumente für beide Parameterattribute völlig unterschiedlich sein können. Zusätzlich können Sie beliebig viele Parameterattribute definieren.Beispiele für PowerShell-Parameter
In diesem letzten Abschnitt des Handbuchs werde ich ein reales SysAdmin-PowerShell-Param-Beispiel geben.
Während ich diesen Leitfaden schrieb, begann ich mit der Entwicklung eines PowerShell-Skripts/einer PowerShell-Funktion, um die Ordnergröße und die Anzahl der Dateien zu ermitteln. Hier ist der param-Teil der Funktion…
|_+_|In den nächsten Unterabschnitten dieses Abschnitts werde ich die verschiedenen Elemente von param erklären. Schließlich führt der letzte Abschnitt einen Funktionsblock ein und fügt den param-Block in die Funktion ein.
Laden Sie PowerShellParamExample.zip herunter, um es Ihnen zu erleichtern, den Codezeilen zu folgen, auf die in den nächsten Unterabschnitten verwiesen wird. Entpacken Sie dann die Datei und öffnen Sie die .ps1-Datei in PowerShell ISE .
ParameterSetName PowerShell-Param-Beispiel
Mein PowerShell-Param-Beispielcode hat drei ParameterSetNames – Ergebnis anzeigen , ExportTxt und CSV exportieren . Ich habe diese Namen verwendet, damit sie leicht erkennen können, was sie tun.
In der Einleitung dieses Abschnitts habe ich erwähnt, dass die Funktion, die ich mit diesem Parametercode baue, die Ordnergröße und die Dateianzahl für jeden Unterordner in einem bestimmten Ordner anzeigt.
Daher bieten die drei ParameterSetNames einem Benutzer die Möglichkeit, Ergebnisse auf der PowerShell-Konsole anzuzeigen. Alternativ hat ein Benutzer die Möglichkeit, das Ergebnis in eine Textdatei oder eine CSV-Datei zu exportieren.
Außerdem jede Parametersatzname Definieren Sie alle Parameter, die ein Benutzer in einem einzigen Befehl aufrufen kann. Basierend auf dieser Idee wird die Funktion, die ich baue, drei Befehlsoptionen oder Syntaxen haben.
Ich werde diese Idee in den folgenden Unterabschnitten und Beispielen erweitern.
CmdletBinding Attribut und DefaultParameterSetName Argumentbeispiele
In den vorherigen Abschnitten dieses Handbuchs sind Sie auf die gestoßen CmdletBinding Attribut. Außerdem sind Sie auch auf eines seiner Argumente gestoßen – DefaultParameterSetName .
Der DefaultParameterSetName Argument wird verwendet, um den Standardparametersatz zu definieren, den eine Funktion aufruft. In diesem Beispiel lautet der Standardname des Parametersatzes Ergebnis anzeigen .
Der DefaultParameterSetName wird in Zeile 1 des Codes deklariert.
PowerShell versucht, den von deklarierten Parametersatz zu verwenden DefaultParameterSetName wenn es nicht bestimmen kann, welcher Parametersatz verwendet werden soll. Wenn Sie jedoch obligatorische Parameter festlegen, können Sie dieses Problem vermeiden.
In jedem Fall schadet es nicht, einen Standard-Parametersatznamen zu deklarieren.
Ordnerpfad Beispiel für String-Parameter
Hier beginnt der Spaß! Der Ordnerpfad Parameter wird verwendet, um den Ordnerpfad einzugeben, erhält die Funktion die Größe ihrer Unterordner – und zählt die Anzahl der Dateien in jedem Unterordner.
Dies ist ein Zeichenfolgenparameter. Das bedeutet, dass jede Zeichenfolge als Eingabe akzeptiert wird.
Ein aufregendes Merkmal der Ordnerpfad Parameter ist, dass er den 3 Parametersatznamen gemeinsam ist. Weiter oben in diesem Artikel habe ich die Herausforderung erläutert, vor der neue PowerShell-Skriptentwickler in dieser Situation stehen können.
Die zu erklären Ordnerpfad parameter in den drei Parametersatznamen habe ich drei Parameterattribute erstellt.
Das erste Parameterattribut befindet sich zwischen den Zeilen 5 und 11. Außerdem hat dieses erste Parameterattribut mehrere Argumente.
Ich möchte jedoch, dass Sie besonders darauf achten Parametersatzname Streit - Ergebnis anzeigen .
Zweitens habe ich zwischen den Zeilen 12 und 18 ein weiteres Parameterattribut mit a deklariert Parametersatzname Argument genannt ExportTxt .
Schließlich habe ich zwischen den Zeilen 19 und 25 ein drittes Parameterattribut mit a deklariert Parametersatzname Argument genannt CSV exportieren .
Wenn Sie außerdem bemerken, dass ich im Gegensatz zur Deklaration von 3 Parameterattributen ein einzelnes deklariert habe Alias , und ValidateNotNullOrEmpty Attribute. Diese Attribute finden Sie in den Zeilen 26 und 27.
Schließlich habe ich direkt unter allen Attributen und ihren Argumenten den Namen des Parameters eingefügt – Ordnerpfad . Der Parametername steht in Zeile 28.
Im letzten Unterabschnitt dieses Abschnitts sehen Sie, wie die Funktion diesen Parameter in 3 Befehlssyntaxen anzeigt.Ergebnis anzeigen , ExportTxt Und CSV exportieren Beispiel für Schalterparameter
Ab Zeile 29 des Param-Codes habe ich einen weiteren Satz Parameterattribute und ihre Argumente deklariert.
Zuerst deklariere ich zwischen den Zeilen 29 und 37 die Parameterattribute und Argumente für die Ergebnis anzeigen Parameter.
Dann deklariere ich zwischen den Zeilen 38 und 47 einen weiteren Parameter namens ExportTxt .
Schließlich habe ich zwischen den Zeilen 48 und 57 deklariert CSV exportieren Parameter.
Die 3 Parameter, die ich in diesem Abschnitt beschrieben habe, sind alle Schalten Parameter. Wie Sie bereits wissen, bedeutet dies, dass die Parameter keine Eingabe des Benutzers erfordern.
Wenn ein Benutzer einen der Parameter auswählt, ändert die Funktion die Art und Weise, wie sie Ergebnisse anzeigt.
So verwenden Sie PowerShell-Parameter in einer PowerShell-Funktion
In diesem Unterkapitel möchte ich den PowerShell-Funktionsblock in meinen Beispielcode einführen.
Die Syntax eines PowerShell-Funktionsblocks ist…
|_+_|Für das letzte Beispiel in diesem Handbuch ersetze ich den PowerShell-Parameterblock innerhalb der Syntax der Funktion durch meinen Parametercode aus dem letzten Unterabschnitt. Außerdem werde ich die Funktion durch ersetzen Get-FolderSizeFileCount , der Name der Funktion.
Die finale Funktion sieht nun so aus…
|_+_| In diesem Beispiel sind die Blöcke Begin {}, Process {} und End {} leer.Testen meiner PowerShell-Parameter in der PowerShell-Funktion
In diesem letzten Abschnitt werde ich die Parameter in der Funktion testen, die ich im letzten Abschnitt erstellt habe.
Wenn Sie es selbst testen möchten, können Sie den Code herunterladen, indem Sie auf diesen Link klicken – Get-FolderSizeFileCount.zip . Entpacken Sie dann die ZIP-Datei.
Nachdem Sie die Datei entpackt haben, öffnen Sie PowerShell und führen Sie den folgenden Befehl aus:
|_+_| Wechseln Sie zum vollständigen Pfad der entpackten Datei.Wenn Sie den Befehl ausführen, erhalten Sie eine Warnmeldung. Geben Sie an der Eingabeaufforderung der Nachricht ein R und drücken Sie die Eingabetaste auf Ihrer Tastatur.
Führen Sie nach dem Import des Moduls auf derselben PowerShell-Konsole den folgenden Befehl aus:
|_+_|Hier ist das Ergebnis des Befehls…
Was ich Ihnen zeigen möchte, ist der Abschnitt SYNTAX der Hilfeseite meiner Funktion. Aus dem obigen Screenshot können Sie den Befehl Get-FolderSizeFileCount in 3 verschiedenen Befehlen ausführen:
|_+_|Das erste, was zu beachten ist, ist, dass die drei Syntaxen die haben Ordnerpfad String-Parameter. Wenn Sie diesen Leitfaden lesen, werden Sie wissen, warum.
Außerdem werden Sie feststellen, dass die erste Syntax das hat Ergebnis anzeigen Schaltparameter ebenfalls. Schließlich haben Sie in der zweiten und dritten Syntax die CSV exportieren , und ExportTxt Schaltparameter bzw.
In Ergänzung zu Ordnerpfad , und CSV exportieren Parameter u ExportTxt Parameter in der zweiten bzw. dritten Syntax haben sie auch die Berichtspfad String-Parameter. Ich habe diesen Parameter nicht erwähnt, da der Deklarationscode dem ähnlich ist Ordnerpfad Code, mit einigen kleinen Unterschieden. Der Berichtspfad wird verwendet, um den Pfad anzugeben, in dem die Funktion die Text- und CSV-Dateiberichte speichert.Das ist es – eine umfassende Anleitung zu PowerShell-Param! Ich hoffe, Sie fanden es hilfreich?
Wenn Sie es hilfreich fanden, stimmen Sie bitte ab ja zu der Frage War dieser Beitrag hilfreich unten.
Alternativ können Sie eine Frage stellen, einen Kommentar hinterlassen oder weitere Rückmeldungen geben, indem Sie das Formular „Antwort hinterlassen“ am Ende dieser Seite verwenden.
Weitere PowerShell-Tech-S-Zonen finden Sie schließlich auf unserer Anleitungsseite für Windows PowerShell. Vielleicht finden Sie auch unsere Seite Arbeit von zu Hause aus sehr hilfreich.


