Автор Тема: Завершить процесс на компьютере через командную строку  (Прочитано 1169 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Faust

  • Ветеран
  • *****
  • Сообщений: 4302
  • Карма: 107
  • Пол: Мужской
  • Bla-bla-bla, mr. Freeman...
    • Просмотр профиля
Задача - нужно удалить процесс на компьютере, который запущен от определенного пользователя больше определенного времени, желательно с логами.
tasklist / taskkill не катят.
Как выяснилось, получить данные о том, сколько времени прошло с момента запуска не получается.
taskkill /FI "USERNAME eq user" /FI "IMAGENAME eq cmd.exe" /FI "CPUTIME gt 00:10:00"
Не прокатывает. По какой-то причине, все процессы имеют CPUTIME никак не привязанные ко времени запуска. Через утилиту pslist выяснилось, что это Kernel Time. Наверное, это время, в течении которого процесс обрабатывается процессором. Если он тупо висит, то время = 0:00:00.
Например, запустил несколько cmd.exe от разных юзерей:

Имя образа   PID   Имя сессии   № сеанса   Память   Состояние   Пользователь   Время ЦП   Заголовок окна
cmd.exe   10252   Console   1   3 100 КБ   Running   user   0:00:00   Командная строка
cmd.exe   2188   Console   1   2 796 КБ   Running   user   0:00:00   Командная строка - tasklist  /fi imagename eq cmd.exe" /v  /FO csv"
cmd.exe   11172   Console   1   2 572 КБ   Running   admin   0:00:00   C:\Windows\system32\cmd.exe

По pslist.exe вот такая картинка:

cmd 10252:
 Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
10180  14      1997   Wait:Executive  0:00:00.015   0:00:00.062    2:36:32.025

cmd 2188:
 Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
11880  14      1433     Wait:UserReq  0:00:00.015   0:00:00.046    0:44:56.572

cmd 11172:
 Tid Pri    Cswtch            State     User Time   Kernel Time   Elapsed Time
8364  14        89   Wait:Executive  0:00:00.015   0:00:00.000    0:44:36.144

Какие ещё утилиты есть?


Оффлайн Mz

  • Старожил
  • ****
  • Сообщений: 341
  • Карма: -13
  • Пол: Мужской
    • Просмотр профиля
Поможет или нет не скажу, а утилита есть PSKILL из пакета PsTools

Оффлайн Eugene

  • Ветеран
  • *****
  • Сообщений: 8140
  • Карма: 1727
  • Пол: Мужской
    • Просмотр профиля
powershell можно заюзать
Get-Process -Name cmd | Format-List name, id, path, starttime
Чтобы вас не разнесло, старайтесь не есть после шести и не курить возле бензоколонки.

Оффлайн Faust

  • Ветеран
  • *****
  • Сообщений: 4302
  • Карма: 107
  • Пол: Мужской
  • Bla-bla-bla, mr. Freeman...
    • Просмотр профиля
Поможет или нет не скажу, а утилита есть PSKILL из пакета PsTools
И какой параметр PSKILL отвечает за продолжительность процесса?

powershell можно заюзать
Get-Process -Name cmd | Format-List name, id, path, starttime
Нет возможности юзать PS, винда 2003=(