В настоящее время я работаю над сценарием Powershell для удаленного запуска некоторых установщиков Microsoft Hotfix на нескольких серверах Windows Server 2008 R2, которыми я управляю. По сути, сценарий копирует все соответствующие файлы на сервер, а затем запускает установщик с помощью Invoke-Command, например:
function InstallCU {
Write-Host "Installing June 2013 CU..."
Invoke-Command -ComputerName $ServerName -ScriptBlock {
Start-Process "c:\aaa\prjcusp2\ubersrvprj2010-kb2817530-fullfile-x64-glb.exe" -ArgumentList "/passive"
}
}
Если я запускаю команду «Start-Process» локально на сервере, установщик запускается правильно. Однако при попытке запустить его удаленно ничего не происходит (на самом деле я вижу, что установщик запускается в диспетчере задач, но через пару секунд он закрывается и не запускается).
Я попытался предоставить Invoke-Command -Credentials, я отключил UAC на сервере и убедился, что мои настройки WinRM (запуск «winrm quickconfig» и установка TrustedHosts на *) верны. Я также пробовал, чтобы сценарий Invoke-Command запускал локальный сценарий Powershell для запуска установщика и менял аргумент с '/ passive' на 'quiet' (в случае, если он не может удаленно запустить что-то с пользовательским интерфейсом), но Опять же, никаких кубиков.
Могу ли я еще что-нибудь попробовать, или я просто не смогу это сделать?
Мне немного стыдно, но я понял, что делаю не так. По сути, мне нужно было добавить параметр -Wait в командлет Start-Process. Окончательный код выглядит так:
function InstallCU {
Write-Host "Installing June 2013 CU..."
Invoke-Command -ComputerName $ServerName -ScriptBlock {
Start-Process "c:\aaa\prjcusp2\ubersrvprj2010-kb2817530-fullfile-x64-glb.exe" -ArgumentList "/passive" -Wait
}
}