Powershell: запустить msiexec с динамически созданными параметрами

В моем скрипте powershell мне нужно запустить msiexec и передать несколько параметров для его инициализации. Проблема состоит в том, что если параметр содержит пробел " ", powershell не выполняет msiexec правильно. Например команда:

msiexec /i .\Setup.msi ConnectionString="Initial Catalog=something;Integrated Security=True;Pooling=False"

Параметр ConnectionString содержит пробелы, и это приводит к тому, что msiexec выполняется неправильно, я получаю код ошибки msiexec 1639 - Неверный аргумент командной строки. Если я удаляю пробелы из строки подключения, msiexec выполняется правильно.

У кого-нибудь есть идеи, как это решить?

2 ответа

Решение

Попробуйте следующим образом:

Start-Process -FilePath msiexec -ArgumentList / /i, .\Setup.msi, "ConnectionString='Initial Catalog=something;Integrated Security=True;Pooling=False'"  -Wait 

Попробуйте использовать одинарные кавычки так:

& msiexec.exe /i .\Setup.msi ConnectionString='"Initial Catalog=something;Integrated Security=True;Pooling=False"'
Другие вопросы по тегам