У меня есть сценарий 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 «Доступ запрещен» для удаленного компьютера
-
Включен удаленный доступ для WMI пользователь из WMI Control -> CIMV2
включил удаленный WMI через брандмауэр: netsh firewall set service RemoteAdmin enable
изменил конфигурацию DCOM в dcomcnfg для WMI дать этой учетной записи разрешение «Удаленная активация»
У меня более 200 клиентов, поэтому я не могу go и включить или изменить эти настройки вручную для каждого узла, который у меня есть.
Есть ли какое-либо возможное решение, такое как создание любого пользователя домена с доступом wmi или написание какой-либо групповой политики для всех компьютеров домена?
Моя основная цель: Извлечь информацию об оборудовании, такую как серийный номер рабочей станции, имя рабочей станции, имя графического процессора, серийный номер монитора удаленных машин (windows 7 и 10), которые находятся в моей сети.