wmi.x_access_denied: - PullRequest
       90

wmi.x_access_denied:

0 голосов
/ 04 апреля 2020

У меня есть сценарий python, который извлекает информацию об оборудовании всех моих рабочих станций windows в моей сети (например, пусть это будут клиентские машины)

цель: извлечь информацию об оборудовании всех windows машин в сети.

мои настройки:

  • python версия - 3,7x (32 бита)
  • с использованием библиотеки wmi для получения информации об оборудовании как серийный номер, имя системы.
  • клиентский компьютер - 300+, в том же домене и той же сети (192.168.21.0 - 192.168.21.200).

проблема, с которой я столкнулся: если я запускаю свой сценарий с передачей удаленного IP-адреса с учетными данными локального администратора, фактически, как работает библиотека wmi.

Ошибка:

Traceback (most recent call last):
  File "C:\Python3\lib\site-packages\wmi.py", line 1263, in connect       
    authentication_level=authentication_level
  File "C:\Python3\lib\site-packages\wmi.py", line 1397, in connect_server
    named_value_set
  File "<COMObject WbemScripting.SWbemLocator>", line 5, in ConnectServer 
  File "C:\Python3\lib\site-packages\win32com\client\dynamic.py", line 287, in _ApplyTypes_
    result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes) + args)
pywintypes.com_error: (-2147352567, 'Exception occurred.', (0, 'SWbemLocator', 'Access is denied. ', None, 0, -2147024891), None)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "j:/Projects/pythonProjects/networkassesttracker/matserbuild.py", line 3, in <module>
    con = wmi.WMI("192.168.225.117",user=r'admin',password='admin01')   #FILL WITH THE REMOTE MACHINE NAME
  File "C:\Python3\lib\site-packages\wmi.py", line 1290, in connect
    handle_com_error ()
  File "C:\Python3\lib\site-packages\wmi.py", line 241, in handle_com_error
    raise klass (com_error=err)
wmi.x_access_denied: <x_wmi: Unexpected COM Error (-2147352567, 'Exception occurred.', (0, 'SWbemLocator', 'Access is denied. ', None, 0, -2147024891), None)>

Это wmi.x_access_denied можно преодолеть, включив / изменив эти настройки на каждой клиентской машине, для целей тестирования, которые я проверил, и это сработало, к вашему сведению, это решение было предоставлено этим блогом WMI «Доступ запрещен» для удаленного компьютера

  1. Включен удаленный доступ для WMI пользователь из WMI Control -> CIMV2

  2. включил удаленный WMI через брандмауэр: netsh firewall set service RemoteAdmin enable

  3. изменил конфигурацию DCOM в dcomcnfg для WMI дать этой учетной записи разрешение «Удаленная активация»

У меня более 200 клиентов, поэтому я не могу go и включить или изменить эти настройки вручную для каждого узла, который у меня есть.

Есть ли какое-либо возможное решение, такое как создание любого пользователя домена с доступом wmi или написание какой-либо групповой политики для всех компьютеров домена?

Моя основная цель: Извлечь информацию об оборудовании, такую ​​как серийный номер рабочей станции, имя рабочей станции, имя графического процессора, серийный номер монитора удаленных машин (windows 7 и 10), которые находятся в моей сети.

...