我有一个python脚本,可提取网络中所有Windows工作站的硬件信息(可以说是客户端计算机)
目的:提取网络上所有Windows计算机的硬件信息。
我的设置:
我面临的问题:如果通过运行脚本来传递带有本地管理员凭据的远程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 "access denied" error for remote computer
从WMI Control-> CIMV2
通过防火墙启用了远程WMI:netsh firewall set service RemoteAdmin enable
为WMI用户更改了dcomcnfg中的DCOM配置,方法是授予该帐户“远程激活”权限
我有200多个客户端,因此我无法为我拥有的每个节点手动启用或更改这些设置。
有没有可能的解决方案,例如创建具有wmi访问权限的任何域用户或为所有域计算机编写任何组策略?
我的主要目标:要提取硬件信息,例如工作站序列号,工作站名称,GPU名称,监视驻留在同一网络中的远程计算机(Windows 7和10)的序列号。