Я написав сценарій Python, який звертається Win32_IP4RouteTable
до наступного:
import wmi
import socket
ip = socket.gethostbyname(socket.gethostname())
rt = wmi.WMI().Win32_IP4RouteTable(Destination = ip)
Проблема полягає в тому, що останній рядок виходить з ладу на одному комп’ютері в офісі. Власник цього комп’ютера стверджує, що він не редагував нічого, пов’язаного з цим, крім зміни пріоритету з'єднання. Отриманий нами зворотній зв'язок наведено нижче:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\python27\lib\site-packages\wmi.py", line 1147, in __getattr__
return getattr (self._namespace, attribute)
File "c:\python27\lib\site-packages\win32com\client\dynamic.py", line 522, in
__getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: winmgmts:.Win32_IP4RouteTable
Отже, моє запитання - що могло статися, що видалило б здатність python посилатися на цей клас? Спасибі заздалегідь
Комп'ютер Windows 64 64-розрядний
Редагувати:
Трохи пізніше я помітив, що ще кілька рядків також виходять з ладу:
from win32com.client import GetObject
WMI = GetObject('winmgmts:')
processes = WMI.InstancesOf('Win32_Process') #Failure here
@JSanchez, що отримав фактичний вихід, я припускаю, це означає, що проблема в Python?
—
wnnmaw
Може виникнути проблема з Python.
—
JSanchez
ip
Чи маєте ви значення для змінної? Не надто добре розбирається (наприклад, зовсім не) у Python. Але мені зараз цікаво ... сподіваюся, хтось сміливіший, ніж я, можу допомогти вам у цьому. :-(
Я дам питання на деякий час, і якщо я трохи не почую нічого, я припускаю, що це пов'язане з пітоном, і переміщу його в Stack Overflow. Але так,
—
wnnmaw
ip
змінна має в ній правильне значення. Я також думаю, що проблема є глибшою, тому що не вдався ще один C-клас (цього разу під час доступу до списку процесів)
Написав невеликий (ну, не надто маленький, оскільки я не міг його вставити сюди) VBScript, який робить те, що робить ваш сценарій (ну, запитуюча частина WMI) і цікавився, чи не заперечуєте ви пробувати на ураженому комп'ютері і бачиш, якщо ти щось отримуєш. Якщо ні, то обов'язково випуск WMI. Якщо так, то проблема Python-> WMI?
—
JSanchez
wmic path win32_IP4RouteTable get Destination
, отримуєте результати чи помилку? Якщо виникла помилка, дотримуйтесь підручника Кеті щодо виправлення пошкодження WMI і перевірте, чи вирішує це ваше питання. katyscode.wordpress.com/2007/02/03/… WMI, будучи службою, може бути пошкоджений аваріями та іншими проблемами. Сподіваємось, кроки в навчальному посібнику можуть допомогти вам без необхідності перевстановлення.