![]() |
|
WMI.ExecQuery("Select * from Win32_Process") - не видит процессы одного из пользователей. | ☑ | ||
---|---|---|---|---|
0
trdm
28.09.18
✎
15:32
|
Скрипт на vbs, для проверки нештатных ситуаций.
Одна из них MS SQL сервер начинает тупить, если оттожрал памяти = ему выделенной. Приходится перезагружать. Пытаюсь определить сколько памяти он скушал, скрипт: Function getProccessMemoryMBytes(psProccName) vBytes = 0 ' todo не видит процессы администратора на SERVERSQL234 set WMI= GetObject("WinMgmts:") set cProcess=WMI.ExecQuery("Select * from Win32_Process") vStrAll = "" vTextSms = "" 'WorkingSetSize http://forum.oszone.net/post-2493717.html for each objP in cProcess if InStr(objP.ExecutablePath,psProccName)>0 Then vBytes = Round(objP.WorkingSetSize / gBytesInMb,2) exit For end if next getProccessMemoryMBytes = vBytes End Function НО! Фишка в том, что MS SQL запушен под логином "Администратор", сессия работает под другим логином и скрипт не видит этот процесс. На локальной машине все в норме. На серваке не видит. Подскажите, может что поправить, в WMI не силен. |
|||
1
Вафель
28.09.18
✎
15:33
|
может нужно с повышенными правами запускать?
|
|||
2
trdm
28.09.18
✎
15:34
|
Я и так админ, моя учетка в группе администраторов.
|
|||
3
Cool_Profi
28.09.18
✎
15:35
|
У МССКЛ есть настройка, сколько ему позволено памяти брать...
|
|||
4
Вафель
28.09.18
✎
15:35
|
(2) этого не достаточно. У тебя винда какая?
|
|||
5
trdm
28.09.18
✎
15:38
|
2003
|
|||
6
Вафель
28.09.18
✎
15:39
|
(5) тогда должно и так работать
|
|||
7
trdm
28.09.18
✎
15:42
|
(6) Может консольный сканер процессов есть? Могу и его вывод разобрать.
|
|||
8
Вафель
28.09.18
✎
15:43
|
в диспетчере задач то видишь?
|
|||
9
trdm
28.09.18
✎
15:50
|
(8) Это да, но только с флагом []&Отображать процессы всех пользователей
|
|||
10
trdm
28.09.18
✎
15:52
|
И даже можно грабануть, если окно найти.
http://prntscr.com/kzsxcv |
|||
11
Вафель
28.09.18
✎
15:55
|
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" _ & strComputer & "\root\cimv2") Set colProcessList = objWMIService.ExecQuery _ ("Select * from Win32_Process") For Each objProcess in colProcessList colProperties = objProcess.GetOwner( _ strNameOfUser,strUserDomain) Wscript.Echo "Process " & objProcess.Name _ & " is owned by " _ & strUserDomain & "\" & strNameOfUser & "." Next https://stackoverflow.com/questions/15269677/how-to-get-all-the-users-processes-in-wmi |
|||
12
trdm
28.09.18
✎
16:02
|
Вопрос можно закрывать, консоль может выручить:
http://cmd4win.ru/administrirovanie-computera/systemnoye-administrorovanie/26-tasklist (11) Мерси, но все равно на видит. |
|||
13
trdm
28.09.18
✎
16:03
|
А вот tasklist - видит. Только попробовал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |