Назад | Перейти на главную страницу

Как вызвать msiexec из powershell с параметрами

Я пытаюсь выполнить следующую строку из сценария PowerShell:

msiexec /qb /i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi CONFIGFILE="ALS GSLB.jnprpreconfig"

Это работает при вызове из командной строки DOS, но MSIEXEC жалуется, что что-то не так, когда я вызываю его из PowerShell.

Это работает ...

msiexec / qb / i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi

Ясно, что ЧТО-ТО портит мои аргументы, но я не могу понять, как заставить их работать.

(Удален "/")

Я просто использовал Powershell для установки GAPS на свои основные серверы, и у меня была такая команда. Мне нравится этот более подробный синтаксис, потому что он более читабелен, и я могу включать комментарии для каждого параметра командной строки, чтобы сэкономить время, которое я и другие пользователи повторно использовали бы эту команду в будущем.

$cmdhash=@{}
$cmdhash['FilePath']    = 'C:\Windows\System32\msiexec.exe'
$cmdhash['Wait']        = $true
$cmdhash['NoNewWindow'] = $true
$cmdhash['ArgumentList']=@()
$cmdhash['ArgumentList'] += '/i \\esd189.org\dfs\wpkg\software\Google\GAPS\googleappspasswordsync64.msi'
$cmdhash['ArgumentList'] += '/l*vx C:\programdata\gaps_msi_log.txt'
$cmdhash['ArgumentList'] += '/quiet'
$cmdhash['ArgumentList'] += 'DOMAIN="example.org"'
$cmdhash['ArgumentList'] += 'ADMIN_EMAIL="googlesync@example.org"'
$cmdhash['ArgumentList'] += 'CREDENTIALS_FILE="\\ds-01\c$\Users\svc-googlesync\Documents\example.json"'
$cmdhash['ArgumentList'] += 'BASE_DN="DC=example,DC=org"'
$cmdhash['ArgumentList'] += 'MAIL_ATTRIBUTE="userPrincipalName"'
# using splatting, run the process
Start-Process @cmdhash

Я не уверен, что ваш /CONFIGFILE= правда. /CONFIGFILE не похоже на вариант msiexec. Возможно, вам стоит пропустить ведущую / для этого? Если убрать косую черту, команда будет выглядеть так.

$cmdhash=@{}
$cmdhash['FilePath']    = 'C:\Windows\System32\msiexec.exe'
$cmdhash['Wait']        = $true
$cmdhash['NoNewWindow'] = $true
$cmdhash['ArgumentList']=@()
$cmdhash['ArgumentList'] += '/qb'
$cmdhash['ArgumentList'] += '/i ps-pulse-win-5.2r5.1-b897-64bitinstaller.msi'
$cmdhash['ArgumentList'] += 'CONFIGFILE="ALS GSLB.jnprpreconfig'

Start-Process @cmdhash