In meiner Batch-Datei rufe ich das PowerShell-Skript folgendermaßen auf:
powershell.exe "& "G:\Karan\PowerShell_Scripts\START_DEV.ps1"
Jetzt möchte ich einen String-Parameter an übergeben START_DEV.ps1
. Angenommen, der Parameter ist w=Dev
.
Wie kann ich das machen?
powershell
batch-file
Karan
quelle
quelle
Antworten:
Angenommen, Sie möchten die Zeichenfolge
Dev
als Parameter aus Ihrer Batchdatei übergeben:Stecke es in deinen Powershell-Skriptkopf:
Dies ist der Fall, wenn Sie die integrierte Variable verwenden möchten
$args
. Andernfalls:und in deinem Powershell-Skriptkopf:
Dies ist der Fall, wenn Sie einen benannten Parameter wünschen.
Möglicherweise möchten Sie auch die Fehlerstufe zurückgeben:
Die Fehlerstufe ist in der Batchdatei als verfügbar
%errorlevel%
.quelle
Angenommen, Ihr Skript ist so etwas wie das folgende Snippet und heißt testargs.ps1
Sie können dies in der Befehlszeile wie folgt aufrufen:
Dadurch wird "Test String" (ohne Anführungszeichen) an der Konsole gedruckt. "Test String" wird zum Wert von $ w im Skript.
quelle
Wenn ein Skript geladen wird, werden alle übergebenen Parameter automatisch in eine spezielle Variable geladen
$args
. Sie können dies in Ihrem Skript referenzieren, ohne es zuvor zu deklarieren.Erstellen Sie beispielsweise eine aufgerufene Datei
test.ps1
und lassen Sie die Variable einfach$args
in einer eigenen Zeile stehen. Wenn Sie das Skript wie folgt aufrufen, wird die folgende Ausgabe generiert:Als allgemeine Empfehlung würde ich beim Aufrufen eines Skripts durch direktes Aufrufen von PowerShell empfehlen, die
-File
Option zu verwenden, anstatt sie implizit mit der Option aufzurufen. Dies&
kann die Befehlszeile etwas übersichtlicher machen, insbesondere wenn Sie sich mit verschachtelten Anführungszeichen befassen müssen.quelle
Fügen Sie die Parameterdeklaration oben in der ps1-Datei hinzu
test.ps1
Ergebnis
quelle
Die Antwort von @Emiliano ist ausgezeichnet. Sie können auch benannte Parameter wie folgt übergeben:
Beachten Sie, dass sich die Parameter außerhalb des Befehlsaufrufs befinden und Sie Folgendes verwenden:
quelle