Como suprimir aspas nos comandos do PowerShell para executáveis
Existe uma maneira de suprimir as aspas em torno de cada argumento da linha de comando que o PowerShell gosta de gerar e depois passar para executáveis externos para argumentos da linha de comando que contenham espaços?
Aqui está a situação:
Uma maneira de descompactar muitos instaladores é um comando do formulário:
msiexec /a <packagename> /qn TARGETDIR="<path to folder with spaces>"
Tentar executar isso no PowerShell provou ser bastante difícil. O PowerShell gosta de incluir parâmetros com espaços entre aspas duplas. As seguintes linhas:
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
Todos resultam na seguinte linha de comando (conforme relatada pela API Win32 GetCommandLine ()):
"msiexec" /a somepackage.msi /qn "TARGETDIR="c:\some path""
Esta linha de comando:
msiexec /a somepackage.msi TARGETDIR="c:\some path" /qn
resulta em
"msiexec" /a fooinstaller.msi "TARGETDIR=c:\some path" /qn
Parece que o PowerShell gosta de incluir os resultados de expressões destinadas a representar um argumento entre aspas ao passá-los para executáveis externos. Isso funciona bem para a maioria dos executáveis. No entanto, MsiExec é muito específico sobre as regras de cotação que deseja e não aceitará nenhuma das linhas de comando que o PowerShell gera para os caminhos que possuem espaços neles.
Existe uma maneira de suprimir esse comportamento?