|
Консольное завершение процессов | ☑ | ||
---|---|---|---|---|
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |