|
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
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
|
И даже можно грабануть, если окно найти.
|
|
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
|
|
12
trdm
28.09.18
✎
16:02
|
Вопрос можно закрывать, консоль может выручить:
(11) Мерси, но все равно на видит.
|
|
13
trdm
28.09.18
✎
16:03
|
А вот tasklist - видит. Только попробовал.
|
|