Имя: Пароль:
IT
Админ
Консольное завершение процессов
,
0 picom
 
04.05.12
07:58
хочу сделать батник по завершению процессов.
Подскажите, как завершить процесс с определенным именем от определенного пользователя?
1 Живой Ископаемый
 
04.05.12
08:03
tskill /?
query process
2 Живой Ископаемый
 
04.05.12
08:05
например: tskill chrome /ID:1 /V
3 picom
 
04.05.12
08:06
Мне надо пользователя по имени
4 Aleksey
 
04.05.12
08:07
Никак
5 andrewks
 
04.05.12
08:08
taskkill - завершение задачи
6 andrewks
 
04.05.12
08:08
(4) это почему?
7 picom
 
04.05.12
08:11
Сеансов у одного пользователя может быть несколько
8 andrewks
 
04.05.12
08:13
(7) ты сам себе противоречишь. то тебе по имени надо, то по ИД

см.(1)
9 Живой Ископаемый
 
04.05.12
08:34
2(7) ну и отлично
10 Лоботряс
 
04.05.12
08:41
(0)Выгонялку пишешь чтоль?
11 picom
 
04.05.12
08:46
(10) да
запуск программ происходит по шедуллеру, но они не всегда закрываются по простою, т.к. файл запуска не всегда является файлом выполняющегося приложения.
Вот и застревают процессы
12 godmod80
 
04.05.12
09:09
taskkill -?  -справка  , tasklist еще полезно поглядеть
13 ptrtss
 
04.05.12
09:21
Вот скрипт например, скачал из гугла и немного подправил под себя




'Скрипт демонстрирует возможность принудительного завершения процессов "1cv7s.exe" на всех компьютерах
'указанного домена. Данный код можно применять непосредственно перед пакетным запуском 1С:Предприятия,
'требующим монопольного входа в базу данных (например, при резервном копировании).

'ВНИМАНИЕ! Задайте нужное значение переменной "DomainName"!

'ВНИМАНИЕ! Для успешной работы скрипта его желательно запускать с правами администратора домена.

'ВНИМАНИЕ! Чтобы опробовать скрипт, не производя деструктивных действий, достаточно закомментировать
'оператор "Proc.Terminate".

Option Explicit
On Error Resume Next

Dim DomainName 'Имя домена
DomainName = "PROMECO"

Dim StrResult 'строка результата работы всей программы
StrResult = StrResult&CStr(Now)&" начало работы скрипта"&VbCrLf

Dim ADSI
Set ADSI = GetObject("WinNT://"&DomainName)
ADSI.Filter = Array("computer")

Dim Comp 'компьютер
Dim WMI 'объект WMI
Dim Proc 'процесс

Dim CurrName 'имя текущего компьютера
CurrName = GetNameComp()

Dim CurrentCompName
Dim WMIObjectName
Dim ErrNumber
Dim DomainName2
Dim UserName
Dim TerminateReturn

'Цикл по компьютерам домена
For Each Comp In ADSI
   
   If Comp.Name = CurrName Then
       
       CurrentCompName = Trim(Comp.Name)
       WMIObjectName = "winmgmts:{ImpersonationLevel=Impersonate, (Debug)}!\\"&CurrentCompName&"\Root\CIMV2"
       
       Set WMI = GetObject(WMIObjectName)
       
       ErrNumber = Err.Number
       
       If Err.Number=0 Then
           
           'Цикл по процессам 1cv7s.exe компьютера
           For Each Proc In WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv7s.exe'")
               
               If Proc.GetOwner(UserName,DomainName2) = 0 Then
                   
                   TerminateReturn = Proc.Terminate
                   
                   StrResult = StrResult&_
                               CStr(Now)&" 1cv7s.exe: "&UserName&" PID="&Proc.ProcessId&_
                               " Proc.Terminate="&TerminateReturn&_
                               vbCrLf
               End if
               
           Next
           
           'Срубать обмен в 8.2 пока смысла нету, хватит и того, что срубается выгрузка из 7.7
           'А загрузчик будет еще последовательность восстанавливать
           'Поэтому, пока все комментируем
           
           'Цикл по процессам 1cv8.exe компьютера
'            For Each Proc In WMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name = '1cv8.exe'")
               
'                If Proc.GetOwner(UserName,DomainName2) = 0 Then
                   'StrResult = StrResult&DomainName2&" "&UserName&vbCrLf
'                    If UCase(UserName) = "ROBOT" Then
                       
'                        TerminateReturn = Proc.Terminate
                       
'                        StrResult = StrResult&_
'                                    CStr(Now)&" 1cv8.exe: "&UserName&" PID="&Proc.ProcessId&_
'                                    " Proc.Terminate="&TerminateReturn&_
'                                    VbCrLf
'                    End If
'                End If
               
'            Next
           
       Else 'Не удалось соединиться с компьютером
           If Err.Number <> 462 Then 'The remote server machine does not exist or is unavailable
               StrResult = StrResult&_
                             "    "&CStr(Now)&" Computer="&Comp.Name&" ERROR "&Err.Number&_
                             VbCrLf
           End If
       End If
       Err.Clear
   End If
Next 'Цикл по компьютерам домена

StrResult = StrResult&CStr(Now)&" конец работы скрипта"&VbCrLf

'Отображение результата
ShowInNotepad("Процессы 1С:"&VbCrLf&VbCrLf&StrResult)
'==========================================================================
'Процедура отображает переданную строку в блокноте
Sub ShowInNotepad(StrToFile)
   Dim FSO 'Объект файловой системы Scripting.FileSystemObject
   Dim TempPath 'Путь к временному файлу
   Dim TxtFile 'Поток текстового файла
   
   Set FSO = CreateObject("Scripting.FileSystemObject")
   TempPath = GetTempPath()&"\"&FSO.GetTempName
   Set TxtFile = FSO.CreateTextFile(TempPath)
   TxtFile.WriteLine(StrToFile)
   TxtFile.Close
   CreateObject("WScript.Shell").Run "notepad.exe "&TempPath
   WScript.Sleep 1000
   FSO.DeleteFile TempPath
End Sub 'ShowInNotepad
'==========================================================================
'Функция возвращает путь к каталогу временных файлов текущего пользователя
Function GetTempPath()
   GetTempPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%TEMP%")
End Function 'GetTempPath
'==========================================================================
'Функция возвращает имя текущего компьютера
Function GetNameComp()
   GetNameComp = CreateObject("WScript.Network").ComputerName
End Function 'GetNameComp
14 ptrtss
 
04.05.12
09:24
+(13)

Это должен быть файл .vbs