Anführungszeichen in PowerShell-Befehlen für ausführbare Dateien unterdrücken

Gibt es eine Möglichkeit, die umschließenden Anführungszeichen um jedes Befehlszeilenargument zu unterdrücken, das PowerShell generieren und dann für Befehlszeilenargumente mit Leerzeichen an externe ausführbare Dateien übergeben möchte?

Hier ist die Situation:

Ein Weg, viele Installer zu entpacken, ist ein Befehl der Form:

msiexec /a <packagename> /qn TARGETDIR="<path to folder with spaces>"

er Versuch, dies von PowerShell aus auszuführen, hat sich als recht schwierig erwiesen. PowerShell schließt Parameter gerne in Anführungszeichen mit Leerzeichen ein. Die folgenden Zeilen:

msiexec /a somepackage.msi /qn 'TARGETDIR="c:\some path"'

msiexec /a somepackage.msi /qn $('TARGETDIR="c:\some path"')

$td = '"c:\some path"'

msiexec /a somepackage.msi /qn TARGETDIR=$td

Alle führen zur folgenden Befehlszeile (wie von der Win32-GetCommandLine () -API gemeldet):

"msiexec" /a somepackage.msi /qn "TARGETDIR="c:\some path""

Diese Befehlszeile:

msiexec /a somepackage.msi TARGETDIR="c:\some path" /qn

Ergebnisse in

"msiexec" /a fooinstaller.msi "TARGETDIR=c:\some path" /qn

Es scheint, dass PowerShell die Ergebnisse von Ausdrücken, die ein Argument darstellen sollen, gerne in Anführungszeichen setzt, wenn sie an externe ausführbare Dateien übergeben werden. Dies funktioniert gut für die meisten ausführbaren Dateien. MsiExec ist jedoch sehr spezifisch in Bezug auf die gewünschten Anführungszeichen und akzeptiert keine der von PowerShell generierten Befehlszeilen, wenn Pfade Leerzeichen enthalten.

Gibt es eine Möglichkeit, dieses Verhalten zu unterdrücken?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage