2010-08-02 21 views
6

Ich möchte ein Skript1.ps1 aus einem anderen Skript mit Argumenten in einer Variablen gespeichert starten.Powershell: Skript mit variablen Argumenten

$para = "-Name name -GUI -desc ""this is the description"" -dryrun"
. .\script1.ps1 $para

Die args ich in script1.ps1 erhalten wie folgt aussieht:

args [0]: -Name Name -GUI -desc "Dies ist die Beschreibung" -dryrun

so das ist nicht das, was ich bekommen wollte. Hat jemand eine Idee, wie man dieses Problem löst?
thx lepi

PS: Es ist nicht sicher, wie viele Argumente die Variable enthält und wie sie eingestuft werden.

Antwort

5

Invoke-Expression Verwendung wird ein weiterer aternative:

$para = '-Name name -GUI -desc "this is the description" -dryrun' 
Invoke-Expression -Command ".\script1.ps1 $para" 
+0

thx, das ergebnis ist am ende das selbe aber das ist die echt nette und kurze variante! – lepi

7

Sie müssen Splatting-Operator verwenden. Schauen Sie sich powershell team blog oder hier unter stackoverflow.com. Hier

ein Beispiel:

@' 
param(
    [string]$Name, 
    [string]$Street, 
    [string]$FavouriteColor 
) 
write-host name $name 
write-host Street $Street 
write-host FavouriteColor $FavouriteColor 
'@ | Set-Content splatting.ps1 

# you may pass an array (parameters are bound by position) 
$x = 'my name','Corner' 
.\splatting.ps1 @x 

# or hashtable, basically the same as .\splatting -favouritecolor blue -name 'my name' 
$x = @{FavouriteColor='blue' 
    Name='my name' 
} 
.\splatting.ps1 @x 

In Ihrem Fall müssen Sie es so nennen:

$para = @{Name='name'; GUI=$true; desc='this is the description'; dryrun=$true} 
. .\script1.ps1 @para 
+0

thx für die anwser , es funktioniert jetzt perfekt! – lepi

+0

Ich bin froh, dass ich geholfen habe. Wenn Sie mit den Antworten zufrieden sind, können Sie die Fragen schließen, indem Sie die Antwort akzeptieren;) – stej

+0

Wo ist der _splatting operator_? Es gibt hier keinen Operator. Dies ist nur die Art und Weise, wie PowerShell die Befehle verarbeitet. Das ist ein Feature, kein Operator. –