Я пытаюсь установить Microsoft Office 2010, я создал файлы MSP и config.xml, поэтому могу сделать это из Powershell, используя следующую команду:
Start-Process "C:\temp\Office2010\x86\setup.exe" -ArgumentList "/config `"Config.xml`" /adminfile `"custom.MSP`"" -Wait -NoNewWindow
И это прекрасно работает. Дождавшись завершения работы setup.exe, Office будет установлен.
Но запуск этой же команды с удаленного компьютера с помощью следующей команды:
Invoke-Command -computer computer -Credential user -ScriptBlock { Start-Process "C:\temp\Office2010\x86\setup.exe" -ArgumentList "/config `"Config.xml`" /adminfile `"custom.MSP`"" -Wait -NoNewWindow}
Я знаю, что команда выполняется, потому что установщик создает файл журнала, но журнал просто внезапно останавливается https://gist.github.com/smudgerdan/62a5e44300a9590d6174
Есть ли что-то, что означает, что winrm не ждет завершения setup.exe? Как установить Office 2010 через WinRM?
Возникли аналогичные проблемы с другой программой - обнаружил, что * .bat в сочетании с запланированной задачей, назначенной объектом групповой политики, является более точным / эффективным для всех версий Windows / ОС. Есть много "[пример]" элементов, которые нужно отредактировать, поэтому обязательно просматривайте их.
Этот сценарий позволяет: 1. проверять ОС 2. проверять, установлена ли уже программа 3. Деинсталлировать, если она уже установлена, и очищать конфигурации 4. Установка * .exe с желаемыми конфигурациями 5. Создание централизованных журналов
Любая из этих функций может быть "REM", если не желательно.
См. Ниже:
Rem This is to install a program using a batch file - this can be triggered by a GPO scheduled task item.
Rem -------------------Variables to Adjust----------------------
Rem
Rem 1. Location of exe and batch file source -
Rem a. Everyone has full or r/w access to (possibly a SHARE)
Rem b. Has no spaces in path
Rem
set DeployDirectory=\\[IP\Client\Windows\Office2010\]
REm
Rem 2. Location of logs
Rem
set logshare=\\[IP\Client\Windows\Office2010\logs]
Rem
Rem 3. Change commands to go with *.exe if needed.
Rem
set CommandLineOptions=["/config `"Config.xml`" /adminfile `"custom.MSP`"" -Wait -NoNewWindow]
Rem
Rem
Rem --------------------------------------------------------------
IF EXIST "%PROGRAMFILES(X86)%" (GOTO 64BIT) ELSE (GOTO 32BIT)
:64BIT
wmic product where name="[name of program when viewing "programs and features]" call uninstall
wmic product where name="[name of program when viewing "programs and features]" call uninstall
REG DELETE HKLM\SOFTWARE\[name of program in regedit] /F
echo deployment x64 %ComputerName%
"%DeployDirectory%\[Nameoffilex64.exe]" %commandlineoptions%
if %errorlevel% neq 0 (GOTO ERRORED) ELSE (GOTO Complete)
:32BIT
wmic product where name="[name of program when viewing "programs and features]" call uninstall
wmic product where name="[name of program when viewing "programs and features]" call uninstall
REG DELETE HKLM\SOFTWARE\[name of program in regedit] /F
echo deployment x32 %Computername%
"%DeployDirectory%\[Nameoffilex86.exe]" %commandlineoptions%
if %errorlevel% neq 0 (GOTO ERRORED) ELSE (GOTO Complete)
:Complete
echo %date% %time% the %0 script has completed successfully >> %logshare%\%ComputerName%.log
Rem pause
GoTo END
:Errored
echo %date% %time% Deployment ended with error code %errorlevel%. >> %logshare%\%ComputerName%.log
Rem pause
GoTo END
:End
echo GoodBye
Rem pause
Please let me know if this resolves the issue.