Имя: Пароль:
1C
 
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 - видит. Только попробовал.