2016-05-31 19 views
0

ich eine ausführbare Datei von Powershell anzurufenden mit:Anruf my.exe von Power

$MyApp = .\MyApp_2.3.64.exe 
    #$MyApp = ".\MyApp_2.3.64.exe" 
    #$MyApp = '.\MyApp_2.3.64.exe'  
    $Options = "transform data.csv -output out -verbose $user" 

    $MyApp transform data.csv -output out -verbose $user 
    $MyApp $Options 

    # Works 
    .\MyApp_2.3.64.exe transform data.csv -output out -verbose $user 

Basierend auf unten Antwort es funktioniert mit:

& $MyApp transform data.csv -output out -verbose $user 

aber es funktioniert nicht, wenn ich tun:

$options = "transform data.csv -output out -verbose $user" 
    # $options = 'transform data.csv -output out -verbose $user' 
    & $MyApp $options 

Wie übertrage ich Optionen usw. an die ausführbare Datei in einem Parameter?

Antwort

4
$exe = ".\MyApp_2.3.64.exe" 
& $exe transform data.csv -output out -verbose 

Oder .$exe

Es vorher nicht arbeiten, wie Sie $variable wird nur Druck Wert einer Variablen und „Ausführen“ eine Variable, die Sie es mit einem Sonderzeichen voranstellen müssen (entweder & oder .). Nun, mit den Parametern, die Sie gleich wieder machen, übergeben Sie einfach eine String-Variable, die alle Ihre Parameter enthält. Sie müssen ein Array von Parametern übergeben, wie zum Beispiel:

$exe = ".\MyApp_2.3.64.exe" 
$params = ("transform", "data.csv", "-output", "out", "-verbose") 
& $exe $params 
+0

Sollten Sie nicht das Invoke-Command- oder Invoke-Expression-Cmdlet verwenden? Auch könnten Sie erklären, warum seine Version nicht funktioniert. Bitte bereichern Sie Ihre Antwort ein wenig. Vielen Dank. – Tom

+1

@ so12345 siehe Update –

+0

viel besser. Vielen Dank. – Tom