none
Завершение процессов определенного пользователя на терминальном сервере RRS feed

  • Общие обсуждения

  • Добрый день!

    Подскажите решение такой проблемы - из-под админской учетки на W2K Server запускаю скрипт, который должен убить все экземпляры определенного процесса заданного пользователя. Скрипт не видит все  процессы этого пользователя, он не получает доступа ко всем процессам (для части процессов возвращается colProperties = 2).

     

    Как получить информацию по всем процессам на сервере?

     

    кусок скрипта, получающий список процессов...

     

    Set colProcessList = objWMIService.ExecQuery _
            ("SELECT * FROM Win32_Process")     
        For Each objProcessItem in colProcessList
            colProperties = objProcessItem.GetOwner(strNameOfUser,strUserDomain)
         If objProcessItem.Name = strProcName Then
          If strNameOfUser = strUserName Then
             ReDim Preserve ProcArray(initSize)
             ProcArray(initSize) = objProcessItem.ProcessId
             initSize=initSize+1
       
             ' Wscript.Echo "Process " & objProcessItem.Name & " is owned by " _
                 '& strUserDomain & "\" & strNameOfUser & objProcessItem.ProcessId & "."
                 objProcessItem.Terminate
                 'strCurrentLine = "Process terminate " & objProcessItem.ProcessId
               'objFile.WriteLine (strCurrentLine)
             Else
             End If
           Else
           End If
        Next

    31 октября 2007 г. 11:05

Все ответы

  •  

    Возможно это связано с (strNameOfUser,strUserDomain), т.е. надо выбирать процессы не по пользователю, а по номеру его терминальной сессии.
    1 ноября 2007 г. 9:52
    Модератор
  • Возможно, но заранее знать номер сессии пользователя невозможно

    2 ноября 2007 г. 9:16
  • Делайте последовательно: по имени пользователя определите номер сессии.

    6 ноября 2007 г. 8:58
    Модератор
  • Хммм ... Ребята, вы точно комсомольцы.

     

    taskkill /FI "UserName eq DOM\VASYA" /FI "SESSION ne 0"

     

    ключ /T и /F добавить по вкусу.

     

    14 ноября 2007 г. 13:43
  • to КГБ

    В терминальной сессии не все процессы запущены от имени пользователя. Есть еще системные процессы.

     

    15 ноября 2007 г. 11:47
    Модератор
  •  sie написано:

    to КГБ

    В терминальной сессии не все процессы запущены от имени пользователя. Есть еще системные процессы.

     

     

    Да без вопросов :

     

    Образец кода

    for /f "tokens=4 delims= " %i in ('tasklist /f i "session ne 0" /NH /FO table /fi "username eq DOM\VASYA" /fi "imagename eq explorer.exe"') do taskkill /fi "session eq %i"

     

     

    Правда explorer.exe может быть не один, но "второй удар будет уже по крышке гроба".
    15 ноября 2007 г. 13:43