Вход | Регистрация


WMI.ExecQuery("Select * from Win32_Process") - не видит процессы одного из пользователей.

WMI.ExecQuery("Select * from Win32_Process") - не видит процессы одного из пользователей.
Я
   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
может нужно с повышенными правами запускать?
   trdm
 
2 - 28.09.18 - 15:34
Я и так админ, моя учетка в группе администраторов.
   Cool_Profi
 
3 - 28.09.18 - 15:35
У МССКЛ есть настройка, сколько ему позволено памяти брать...
   Вафель
 
4 - 28.09.18 - 15:35
(2) этого не достаточно. У тебя винда какая?
   trdm
 
5 - 28.09.18 - 15:38
2003
   Вафель
 
6 - 28.09.18 - 15:39
(5) тогда должно и так работать
   trdm
 
7 - 28.09.18 - 15:42
(6) Может консольный сканер процессов есть? Могу и его вывод разобрать.
   Вафель
 
8 - 28.09.18 - 15:43
в диспетчере задач то видишь?
   trdm
 
9 - 28.09.18 - 15:50
(8) Это да, но только с флагом []&Отображать процессы всех пользователей
   trdm
 
10 - 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
   trdm
 
12 - 28.09.18 - 16:02
Вопрос можно закрывать, консоль может выручить:
http://cmd4win.ru/administrirovanie-computera/systemnoye-administrorovanie/26-tasklist
(11) Мерси, но все равно на видит.
   trdm
 
13 - 28.09.18 - 16:03
А вот tasklist - видит. Только попробовал.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует