Как запускать и останавливать процессы в PowerShell?

Это должно нормально работать в PowerShell старше 3. Мне нужно запустить два процесса: wuapp.exe и desk.cpl с вкладкой ScreenSaver. У меня проблема в том, что как только я запускаю wuapp.exe, имя процесса отображается в диспетчере задач как explorer.exe - текущий код работает для wuapp.exe, но не на каждой машине. Другое дело, когда я убиваю rundll32, другие приложения также закрываются. Что ты посоветуешь?

$wshell = New-Object -ComObject Wscript.Shell
Start-Process  wuapp.exe
(New-Object -comObject Shell.Application).Windows() | foreach-object {$_.quit()}
Start-Process rundll32 desk.cpl,InstallScreenSaver
Stop-Process -ProcessName rundll32* -Force

person ppiotrek    schedule 24.11.2015    source источник


Ответы (1)


Я не совсем понимаю, что вы имеете в виду, когда wuapp.exe отображается как explorer.exe, но отслеживать процесс rundll32 довольно просто.

Используйте Start-Process с параметром PassThru, чтобы вернуть процесс, который он создает:

$ScreenSaverCpl = Start-Process rundll32 desk.cpl,InstallScreenSaver -PassThru
# Call Stop-Process when no longer needed:
Stop-Process $ScreenSaverCpl
person Mathias R. Jessen    schedule 24.11.2015
comment
Проблема с wuapp.exe заключается в том, что как только я запускаю его, я вижу в диспетчере задач Центр обновления Windows, но когда я перехожу в «Процессы», он выделяет explorer.exe, а такого процесса, как wuapp.exe, нет. Как я могу это отследить? - person ppiotrek; 25.11.2015