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

?
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top