Übergeben von Parametern an ein PowerShell-Skript
Sie können Parameter auf zwei verschiedene Arten an ein PowerShell-Skript übergeben. (Wenn Sie nichts über PowerShell wissen, lesen Sie bitte den Tipp “ Einführung in PowerShell „.) Parameter können nach Position oder nach Namen übergeben werden. Beide sind gleichermaßen gültig. Schauen wir uns also an, wie die einzelnen Schritte ausgeführt werden.
Ich habe ein PowerShell-Skript namens LookForFiles.ps1. Es sucht nach Dateien in einem bestimmten Verzeichnis und zeigt die Dateien an, die größer als 20 KB sind. Im Moment sieht mein Skript folgendermaßen aus:
$files = Get-ChildItem C:\Temp foreach ($file in $files) { if ($file.length -gt 20000) { Write-Output $file } }
Wie Sie sehen können, sind sowohl mein Verzeichnisname (C: \ Temp) als auch die zu überprüfende Größe (20000) fest codiert. Ich möchte stattdessen den Namen und die Größe des Verzeichnisses übergeben, damit mein Skript flexibler wird.
Zuerst ändere ich die Dinge so, dass ich diese Parameter nach Position übergebe, d. H. Der erste Parameter ist das Verzeichnis und der zweite Parameter ist die Größe. Mein neues Skript sieht folgendermaßen aus:
$files = Get-ChildItem args[0] foreach ($file in $files) { if ($file.length -gt args[1]) { Write-Output $file } }
Jetzt rufe ich mein Skript auf und beobachte die Ausgabe: (Siehe Abbildung 1.)
Abbildung 1. Positionsparameter übergeben.
Beachten Sie, dass ich beim Aufrufen des Skripts zwei Parameter übergebe, nämlich „C: \ Temp“ und „20000“. Diese werden in „$ args [0]“ und „$ args [1]“
ausgefüllt jeweils so, dass das Skript genau wie zuvor ausgeführt wird. Ändern wir nun das Skript so, dass es benannte Parameter erwartet:
param([string] $dir = "C:\Temp", [int32] $size = 20000) $files = Get-ChildItem $dir foreach ($file in $files) { if ($file.length -gt $size) { Write-Output $file } }
Beachten Sie, dass ich die Verweise auf die Variablen „$ args“ entfernt habe. Beachten Sie auch, dass die erste Zeile (erweitert auf die zweite Zeile) ein „Parameter“
ist Erklärung. Dadurch wird PowerShell angewiesen, benannte Parameter zu erwarten. Diese „param“ -Anweisung muss die erste Zeile in Ihrem Skript sein. Es definiert zwei Variablen und initialisiert sie auf Standardwerte. Es definiert die Zeichenfolgenvariable $ dir und standardmäßig „C: \ Temp“ und definiert die int32 (numerische) Variable $ size und standardmäßig 20000. Diese Werte werden mit Standardwerten initialisiert, damit keine Parameter übergeben werden, wenn die Wenn das Skript aufgerufen wird, wird es weiterhin ausgeführt und verwendet diese Werte.
Anstelle von $ args [0] habe ich jetzt die Variable $ dir und anstelle von $ args [1] habe ich jetzt die Variable $ size. Rufen wir das Skript auf und geben Sie die folgenden Parameter an:
(Siehe Abbildung 2.)
Abbildung 2. Übergeben benannter Parameter.
Wenn das Skript aufgerufen wird, gebe ich „-dir“ gefolgt von dem Verzeichnis an, an dem ich interessiert bin, und ich gebe „-size“ an, um die Größe anzugeben, an der ich interessiert bin. Da es sich um benannte Parameter handelt, kann ich ihre Reihenfolge umkehren dass „-size“ zuerst angegeben wird und „-dir“ als zweites angegeben wird.
Oder ich kann sie ganz weglassen und die Werte im Skript werden verwendet.
Dieser Tipp (2902) gilt für Windows 7, 8 und 10.