flashpixx Geschrieben 8. Februar 2014 Geschrieben 8. Februar 2014 Hallo, ich versuche einen String in Powershell zusammen zu bauen, in dem ein Command-Line Pfad enthalten ist, d.h. ein Pfad zu einer Exe (die unter Program Files liegt) und die Exe muss noch mehrere Argumente erhalten. Den Pfad erstelle ich mit Join-Path und dann mache ich eine Stringverknüpfung, leider habe ich Probleme, wenn der Pfad Leerzeichen enthält z.B. sieht mein Commando dann so aus: C:\Program Files\Program\run.exe -abcd -config" Wie kann ich einen korrekten Pfad zu dem Programm erzeugen und dahinter die Argumente korrekt angeben und das ganze in einem String speichern, der dann das Kommando richtig maskiert enthält. Danke fpx
SilentDemise Geschrieben 9. Februar 2014 Geschrieben 9. Februar 2014 hi flashpixx, es gibt dafür einen eigenen operator, das "&". du kannst dann folgendes benutzen: & "C:\Program Files\Program\run.exe -abcd -config"
flashpixx Geschrieben 9. Februar 2014 Autor Geschrieben 9. Februar 2014 Ich bekomme leider keine lauffähige Version hin. Ich habe folgenden Code $mycmd = call-some-function call-some-other-function $mycmd Ich muss jetzt in $mycmd den String richtig escapen einfach ein $mycmd = &$mycmd hat nicht funktioniert.
SilentDemise Geschrieben 9. Februar 2014 Geschrieben 9. Februar 2014 wenn du dein command als parameter übergibst, musst du es klammern, damit der ausdruck zuerst ausgeführt wird.
flashpixx Geschrieben 9. Februar 2014 Autor Geschrieben 9. Februar 2014 wenn du dein command als parameter übergibst, musst du es klammern, damit der ausdruck zuerst ausgeführt wird. Ich hatte versucht $mycmd = call-some-function $mycmd = &mycmd call-some-other-function $mycmd leider ohne Erfolg
SilentDemise Geschrieben 10. Februar 2014 Geschrieben 10. Februar 2014 (bearbeitet) was bekommst du denn für einen fehler? Was willst du denn ausführen? http://stackoverflow.com/questions/1673967/how-to-run-exe-in-powershell-with-parameters-with-spaces-and-quotes hier findet man nochmal eine nützliche Beschreibung und einen hilfreichen link zum parsen der posh. Bearbeitet 10. Februar 2014 von SilentDemise
flashpixx Geschrieben 12. Februar 2014 Autor Geschrieben 12. Februar 2014 (bearbeitet) Ich versuche aktuell ein Invoke-Command durchzuführen. Der String enthält folgendes: C:\Users\devJenkins\nssm.exe install devJenkins C:\Program Files\Java\jre7\bin\java.exe Der String sieht wie folgt aus: "$nssm install devJenkins $java" $nssm wird vorher definiert und $java wird aus der installLocation Eigenschaft des Installationseintrages ermittelt. Wenn ich es mit & versuche auszuführen, dann erhalte ich die Meldung: & : Die Benennung "C:\Users\devJenkins\nssm.exe install devJenkins C:\Program Files\Java\jre7\bin\java.exe" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang. Diese Meldung erscheint auch, wenn ich Singlequotes nehme Mach ich das Commando mittels invode: Invoke-Command : Der Parametersatz kann mit den angegebenen benannten Parametern nicht aufgelöst werden. Letzter Fehler ist klar, weil das Leerzeichen bei der Java-Pfadangabe als Seperator für die Parameter dient. Bearbeitet 12. Februar 2014 von flashpixx
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden