Wie Sie einen Parameter aus Batch-Datei auf eine Funktion in einem Powershell-Skript übergeben
-
11-09-2019 - |
Frage
Ich habe eine Batch-Datei, die einen Powershell-Skript rufen:
Batch-Datei: @ECHO OFF Powershell .. \ PowerShellScript.ps1
Der Powershell-Skript wiederum hat eine Funktion, die einen Parameter erwartet:
Powershell-Skript:
function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}
Lassen Sie uns sagen, ich habe einen Wert: VALUE1, die aus der Batch-Datei übergeben werden muss, während die PowerShellScript.ps1 Aufruf, wie kann ich es an die Funktion PSFunction geben, so dass meine Ausgabe ist VALUE1
?Lösung
ändern Ihr Skript wie folgt aussehen
function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}
PSFunction $args[0]
und von der Batch-Datei, würde es aussehen
powershell ..\PowerShellScript.ps1 VALUE1
Andere Tipps
Mit dem -Command Schalter powershell.exe sagen, um eine Zeichenfolge zu interpretieren, als ob es in einer Powershell-Eingabeaufforderung eingegeben wurde. In Ihrem Fall könnte die Zeichenfolge dot-Quelle PowerShellScript.ps1 (in die neue powershell.exe Umgebung zu importieren) und rufen Sie dann PSFunction mit VALUE1 als Parameter:
set VALUE1=Hello World
powershell.exe -command ". ..\PowerShellScript.ps1; PSFunction '%VALUE1%'"
eine Funktion in einem Powershell-Skript definieren tut nicht , um die Funktion auszuführen. Wenn Sie das wollen, dann ist Ihr Skript könnte so aussehen müssen:
function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}
PSFunction "some string"
Aus dem Skript haben Sie noch eine dynamische $args
Variable, die alle Parameter werden an das Skript übergeben. So
function PSFunction([string]$Parameter1)
{
Write-Host $Parameter1
}
PSFunction $args[0]
wird der erste Parameter übergeben Sie auf die Funktion auf der Kommandozeile gab.
Es scheint mir, dass Sie einfach wählen sollen, was verwenden - Batch-Dateien oder Powershell :) Powershell ist leistungsstärker, aber Batch-Dateien sind leichter zu erstellen (vor allem mit Dr.Batcher ) und an jedem Ort ausgeführt werden kann.