2014-11-05 102 views
0

我想展示如果和池中的iis池名称的过程。 这里是我的Python代码:从python获得iis工作进程wmi

import wmi 
c = wmi.WMI('.', namespace="root/WebAdministration") 
c.query("select ProcessId from WorkerProcess") 

失败:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\site-packages\wmi.py", line 1009, in query 
    return [ _wmi_object (obj, instance_of, fields) for obj in self._raw_query(wql) ] 
    File "C:\Python27\lib\site-packages\win32com\client\util.py", line 84, in next 
    return _get_good_object_(self._iter_.next(), resultCLSID = self.resultCLSID) 
pywintypes.com_error: (-2147217389, 'OLE error 0x80041013', None, None) 

我也试过:

for p in c.WorkerProcess: 
    print p.ProcessId 

这也不起作用。 现在,这里是一个非常相似的VisualBasic脚本代码工作正常:

Set oWebAdmin = GetObject("winmgmts:root\WebAdministration") 
Set processes = oWebAdmin.InstancesOf("WorkerProcess") 

For Each w In processes 
    WScript.Echo w.ProcessId 
    WScript.Echo w.AppPoolName 
Next 

的文档: http://msdn.microsoft.com/en-us/library/microsoft.web.administration.workerprocess(v=vs.90).aspx

它看起来像我应该实例化,但我无法弄清楚如何。 任何想法如何让它在python中工作?

回答

0

其实我的代码是正确的。我只需要用admin preivileges来运行它。

+0

你是如何添加管理员权限的? – 2015-08-20 09:40:40

+0

你应该右键单击终端并以管理员身份运行它,然后在终端中运行代码。 – max 2015-08-20 22:39:23