Latest posts on ActivePython & WMI topichttp://python.su/forum/topic/786/2011-02-23T17:31:21+02:00Общий :: Python для экспертов :: ActivePython & WMI
2011-02-23T17:31:21+02:00Александр Кошелев67012Задайте этот вопрос в отдельной теме! Ваш вопроса никак не связан с первоначальным.<br/><br/>Одна тема – один вопрос!
Общий :: Python для экспертов :: ActivePython & WMI
2011-02-23T17:13:05+02:00DrTiBiBo67011Хоть тема и старая, но вопрос по прежнему актуален, по крайней мере для меня.<br/>Как заставить работать GetOwner?<br/>Мой кусок программы<br/><div class="code"><pre>for os in c.Win32_Process():<br/> print os.Caption<br/> os.GetOwner(myuser, dom)<br/> print myuser</pre></div>Выдает ошибку<br/>System Idle Process<br/>Traceback (most recent call last):<br/> File “Hello.py”, line 15, in <module><br/> os.GetOwner (myuser, dom)<br/>NameError: name ‘myuser’ is not defined<br/><br/>Что не так?
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-15T14:37:45+03:00Все ники заняты5256<blockquote><em>bialix</em><br/>Меня берут смутные сомнения насчет User = None; Domain = None</blockquote>Предварительное присваивание пустых строк вместо None тоже ничего не меняет.
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-15T00:28:10+03:00bialix5245<blockquote><em>Все ники заняты</em><br/>Нет, с вызовом GetOwner что-то не то… Сейчас уже почему-то не могу воспроизвести те же самые сообщения об ошибках (может, напутал что). Код:<br/><div class="code"><pre>import win32com.client<br/>strComputer = "."<br/>objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")<br/>objSWbemServices = objWMIService.ConnectServer(strComputer,"root\\cimv2")<br/>colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")<br/>for Item in colItems:<br/> print Item.Caption<br/> User = None; Domain = None<br/> Item.GetOwner(User, Domain)<br/> print</pre></div>Выдаёт такое:<br/><blockquote>Item.GetOwner(User, Domain)<br/>TypeError: ‘int’ object is not callable</blockquote>В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…</blockquote>Меня берут смутные сомнения насчет User = None; Domain = None<br/>однако я не силен в таких делах, так что…
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-14T22:58:08+03:00Все ники заняты5244Нет, с вызовом GetOwner что-то не то… Сейчас уже почему-то не могу воспроизвести те же самые сообщения об ошибках (может, напутал что). Код:<br/><div class="code"><pre>import win32com.client<br/>strComputer = "."<br/>objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")<br/>objSWbemServices = objWMIService.ConnectServer(strComputer,"root\\cimv2")<br/>colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")<br/>for Item in colItems:<br/> print Item.Caption<br/> User = None; Domain = None<br/> Item.GetOwner(User, Domain)<br/> print</pre></div>Выдаёт такое:<br/><blockquote>Item.GetOwner(User, Domain)<br/>TypeError: ‘int’ object is not callable</blockquote>В VBScript метод GetOwner вызывался бы именно так. Однако, в Python Item.GetOwner возвращает целое (как будто это свойство). Для “System Idle Process” это 2, для всех остальных - 0. Бред какой-то…
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-13T10:01:01+03:00bialix5227<blockquote><em>Все ники заняты</em><br/><blockquote><em>bialix</em><br/>А обратные слэши кто экранировать будет???</blockquote>Блин, и правда :). Спасибо, с экранированием всё работает.<br/>Однако, вопрос про метод GetOwner в силе.</blockquote>Питон ругается на отсутпы в тексте. Смотрите внимательнее исходники на наличие всяких лишних символов форматирования текста.
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-12T23:04:21+03:00Все ники заняты5224<blockquote><em>bialix</em><br/>А обратные слэши кто экранировать будет???</blockquote>Блин, и правда :). Спасибо, с экранированием всё работает.<br/>Однако, вопрос про метод GetOwner в силе.
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-12T22:32:54+03:00bialix5223<blockquote><em>Все ники заняты</em><br/>Можно ли в ActivePython 2.5 работать с WMI?<br/><div class="code"><pre>import win32com.client<br/>objWMI = win32com.client.GetObject("winmgmts:\\.\root\CIMV2")</pre></div>Выдаёт такое:<br/><blockquote>Traceback (most recent call last):<br/> objWMI = win32com.client.GetObject(“winmgmts:\\.\root\CIMV2”)<br/> File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 73, in GetObject<br/> return Moniker(Pathname, clsctx)<br/> File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 88, in Moniker<br/> moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)<br/>pywintypes.com_error: (-2147217375, ‘OLE error 0x80041021’, None, None)</blockquote></blockquote>А обратные слэши кто экранировать будет???<br/>Хотя бы надо <br/><br/>objWMI = win32com.client.GetObject(r“winmgmts:\\.\root\CIMV2”)
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-12T16:44:05+03:00Все ники заняты5222Работает вот так:<br/><div class="code"><pre>import win32com.client<br/>strComputer = "."<br/>objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")<br/>objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")<br/>colItems = objSWbemServices.ExecQuery("Select * from Win32_Process")<br/>for Item in colItems:<br/> print Item.Caption<br/> print Item.ProcessId<br/> print Item.CommandLine<br/> User = None; Domain = None<br/> # Item.GetOwner(User, Domain)<br/> print</pre></div>Получается, что с помощью моникера “winmgmts:\\” подключиться из Python к WMI нельзя?<br/>И важный вопрос: а можно ли воспользоваться методом GetOwner (в приведённом коде закомментирован)?<br/>Выдаёт такое:<br/><blockquote>Item.GetOwner(User, Domain)<br/> ^<br/>IndentationError: unindent does not match any outer indentation level</blockquote>
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-12T16:25:04+03:00Все ники заняты5221Странно, что вот такой код вполне работоспособен:<br/><div class="code"><pre>import win32com.client<br/>NameSpace = win32com.client.GetObject("WinNT:")<br/>for Domain in NameSpace:<br/> print Domain.Name</pre></div>
Общий :: Python для экспертов :: ActivePython & WMI
2007-05-12T16:11:00+03:00Все ники заняты5220Можно ли в ActivePython 2.5 работать с WMI?<br/><div class="code"><pre>import win32com.client<br/>objWMI = win32com.client.GetObject("winmgmts:\\.\root\CIMV2")</pre></div>Выдаёт такое:<br/><blockquote>Traceback (most recent call last):<br/> objWMI = win32com.client.GetObject(“winmgmts:\\.\root\CIMV2”)<br/> File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 73, in GetObject<br/> return Moniker(Pathname, clsctx)<br/> File “C:\Program Files\Python25\Lib\site-packages\win32com\client\__init__.py”, line 88, in Moniker<br/> moniker, i, bindCtx = pythoncom.MkParseDisplayName(Pathname)<br/>pywintypes.com_error: (-2147217375, ‘OLE error 0x80041021’, None, None)</blockquote>