Вопрос

С BAT/CMD Сценарий я могу просто использовать "msiexec /i <whatever.msi> /quiet /norestart" а затем проверьте %errorlevel% для результата.

С VBScript, используя Wscript.Shell объект Run() Метод, я могу получить результат так:

"result = oShell.Run("msiexec /i ...", 1, True)"

Как я могу сделать это с PowerShell?

Это было полезно?

Решение

Я бы завершил это в начальный процесс и использовал свойство ExitCode результирующего объекта процесса. Например

(Start-Process -FilePath "msiexec.exe" -ArgumentList "<<whatever>>" -Wait -Passthru).ExitCode

Другие советы

$LastExitCode

или

$?

В зависимости от того, что вам нужно. Первый - целое число, последнее, просто логический. Более того, $LastExitCode Заполняется только для запуска нативных программ, в то время как $? Как правило, сообщает, был ли последний командный запуск успешным или нет - поэтому он также будет установлен для командлетов.

PS Home:\> cmd /c "echo foo"; $?,$LASTEXITCODE
foo
True
0
PS Home:\> cmd /c "ech foo"; $?,$LASTEXITCODE
'ech' is not recognized as an internal or external command,
operable program or batch file.
False
1

Вы также можете использовать комплект для развертывания приложений PowerShell, который предоставляет несколько вещей.

Тогда вы можете использовать, например

Execute-MSI -Action 'Install' -Path "$dirFiles\your.msi" -AddParameters "INSTALLFOLDER=C:\$appFolder"

Информация http://psappdeploytoolkit.com/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top