2017-02-16 3 views
0

Gibt es eine Möglichkeit, Powershell-Parameter mit einer Datei bereitzustellen? Im Moment habe ich ein Skript, das My_Script.ps1 heißt. Um dieses Skript zu starten Ich habe die richtigen Parameter in dem Befehl zur Verfügung zu stellen:PowerShell: Parameter in einer Datei bereitstellen

.\My_Script.ps1 -param1="x" -param2="x" -param3="x" -param4="x" -param5="x" -param6="x" ... 

Dies funktioniert, aber es ist nicht eine sehr einfache Möglichkeit, um das Skript zu starten. Ist es in Powershell möglich, eine Datei zu verwenden, in der Sie Ihre Parameter speichern und diese Datei beim Starten des Skripts verwenden?

Beispiel

In My_Script.ps1 ich hinzufügen, so etwas wie:

Param(
    [string]$File="Path/to/file" 
    ) 

In meiner Datei habe ich so etwas wie

param1="x" 
param2="x" 
param3="x" 
param4="x" 
... 

das Skript auszuführen Sie die Datei bearbeiten können und einfach Starten Sie das Skript mit .\My_Script.ps1

Antwort

1

Zusätzlich zu splatting können Sie Variablen aus = getrennten Werten in einer Datei erstellen.

param1=foo 
param2=bar 
param3=herp 
param4=derp 

Geben Sie die Werte nicht an.

(Get-Content c:\params.ini -raw | ConvertFrom-StringData).GetEnumerator() | 
    ForEach { Set-Variable $_.name $_.value } 
  • Power: 2:

    ([IO.File]::ReadAllText('c:\params.ini') | ConvertFrom-StringData).GetEnumerator() | 
        ForEach { Set-Variable $_.name $_.value } 
    
  • der Code die Parameternamen sollten für eine Variable (keine Leerzeichen usw.)

    • Power 3 und neueren gültigen erstellt Variablen im aktuellen Bereich. Es ist möglich, in einem globalen/script/parent scope zu erstellen.

    +0

    Vielen Dank! Ich musste 'Set-Value' durch' Set-Variable' ersetzen. Als es funktionierte. Sie können es bearbeiten, wenn Sie möchten. – lvthillo

    +0

    Guter Fang. Ich habe 'sv' im eigentlichen Code verwendet, den ich ausprobiert habe. – wOxxOm

    0

    Sie können diese blog posting für einen Start verwenden und Ihre Parameter in einem ini-ähnlichen Format deklarieren.

    Sicher können Sie auch ein CSV-ähnliches Format verwenden und mit dem Cmdlet import-csv arbeiten.

    2

    Eine weitere Option: Nur eine ps1-Datei als Konfigurationsdatei verwenden und Ihre Variablen definieren, wie Sie

    $Param1 = "Value" 
    $Param2 = 42 
    

    Dann können Sie verwenden Dot-Sourcing oder Import-Modul in Ihrem Haupt-Skript tun würden, um die Daten zu erhalten aus der Config

    . .\configfile.ps1 
    

    oder

    Import-Module .\Configfile.ps1 
    

    danach Nitrieren Datei ards können Sie einfach die Variablen verwenden

    Verwandte Themen