Comment faire pour supprimer les guillemets dans les commandes PowerShell pour les exécutables

Est-il un moyen de supprimer le bloc à l'intérieur des guillemets autour de chaque argument de ligne de commande que PowerShell aime à générer et puis passer à l'externe des fichiers exécutables pour les arguments de ligne de commande qui ont des espaces à l'?

Voici la situation:

Une façon de décompresser de nombreux installateurs est une commande de la forme:

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

Essayer de l'exécuter à partir de PowerShell s'est avéré très difficile. PowerShell aime à joindre les paramètres avec des espaces entre double-quotes. Les lignes suivantes:

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

Tous les résultats dans la ligne de commande suivante (tel que rapporté par le Win32 GetCommandLine() de l'API):

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

Cette ligne de commande:

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

résultats dans

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

Il semble que PowerShell aime à joindre les résultats des expressions vocation à représenter un argument entre guillemets lors du passage à des fichiers exécutables. Cela fonctionne bien pour la plupart des fichiers exécutables. Cependant, MsiExec est très spécifique au sujet de citer des règles qu'il veut et de ne pas accepter aucune des lignes de commande PowerShell génère pour les chemins ont des espaces.

Est-il un moyen de supprimer ce problème?

Le problème est résolu?
Non, rien n'a fonctionné. Powershell ne peuvent tout simplement pas faire cela. J'ai eu recours à la présence de l'appel du script un fichier de commandes qui permettrait de le citer correctement.
Résolu dans la réponse ci-dessous (utilisez arrière-tique cite:"").

OriginalL'auteur David Gladfelter | 2010-04-12