flashpixx Geschrieben 8. Februar 2014 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 9. Februar 2014 Teilen 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" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. Februar 2014 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 9. Februar 2014 Teilen Geschrieben 9. Februar 2014 wenn du dein command als parameter übergibst, musst du es klammern, damit der ausdruck zuerst ausgeführt wird. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 9. Februar 2014 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SilentDemise Geschrieben 10. Februar 2014 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 12. Februar 2014 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.