在域环境下,可以通过命名空间+对方主机名的方式获取主机的配置信息
import wmi # 在域环境内 可以直接通过命名空间+主机名的方式直接获取域中信任主机的配置信息 class ComputerMessage(object): Cname = "" namespace = "" client = "" msg = {} # 系统信息:系统版本,主机名,系统安装时间,系统位数,串口ID,总内存大小 system = ['Caption', 'CSName', 'InstallDate', 'OSArchitecture', 'WindowsDirectory', 'SerialNumber'] # # CPU cpu = ['Name'] # # 内存参数: memory = ['Capacity','Manufacturer', 'PartNumber', 'SerialNumber', 'Speed', 'Tag', ] # # {盘符num:{磁盘型号,接口类型,磁盘容量}} disk = ['Caption', 'InterfaceType', 'Size'] # #网卡信息 : 网关,网卡卡槽,是否开启DHCP,DNS,IPadd,MASk,MAC network = ['DefaultIPGateway', 'Description', 'DHCPEnabled', 'DNSServerSearchOrder', 'IPAddress', 'IPSubnet', 'MACAddress'] # # BIOS 信息: BIOS版本,BIOS厂商 bios = ['BIOSVersion', 'Manufacturer', ] def __init__(self, computername): self.Cname = computername self.namespace = "rootcimv2" self.client = wmi.WMI(computer=self.Cname,namespace=self.namespace) def GetSysMessage(self): system_msg = [] for sys in self.client.Win32_OperatingSystem(): for i in self.system: if i == 'InstallDate': system_msg.append(getattr(sys,i).split('.')[0]) elif i == 'TotalVisibleMemorySize': system_msg.append("%sGB"% round(int(getattr(sys, i))/(1024*1024))) else: system_msg.append(getattr(sys, i)) self.msg["sys_msg"] = dict(zip(self.system, system_msg)) def GetCpuMessage(self): for i in self.client.Win32_Processor(): self.msg['cpu'] = i.name def GetMemoryMessage(self): m2 = {} for i in enumerate(self.client.Win32_PhysicalMemory()): m1 = [] for i2 in self.memory: if i2 == 'Capacity': m1.append(round(int(getattr(i[1], i2)) / 1024 / 1024 / 1024)) elif i2 == 'PartNumber': m1.append(getattr(i[1], i2).strip()) else: m1.append(getattr(i[1], i2)) m2["memory%s"%i[0]] = dict(zip(self.memory, m1)) self.msg.update(m2) def GetStorigeMessage(self): disk_count = {} for i in enumerate(self.client.Win32_DiskDrive()): disk_msg = [] for i2 in self.disk: if i2 == 'Size': disk_msg.append("%s GB" % round(int(getattr(i[1], i2))/(1024*1024*1024))) else: disk_msg.append(getattr(i[1], i2)) disk_count["disk%s" % i[0]] = dict(zip(self.disk, disk_msg)) self.msg.update(disk_count) def GetNetworkMessage(self): n2 = {} for i in enumerate(self.client.Win32_NetworkAdapterConfiguration(IPEnabled=1)): n1 = [] for i2 in self.network: if i2 == 'IPSubnet': n1.append(getattr(i[1], i2)[0]) elif i2 == 'IPAddress': n1.append(getattr(i[1], i2)[0]) elif i2 == 'DefaultIPGateway': if getattr(i[1], i2) is not None: n1.append(getattr(i[1], i2)[0]) else: n1.append(getattr(i[1], i2)) else: n1.append(getattr(i[1], i2)) n2["network%s" % i[0]] = dict(zip(self.network, n1)) self.msg.update(n2) def GetBiosMessage(self): b = self.client.Win32_BIOS() b1 = [] for i in b: for i2 in self.bios: b1.append(getattr(i, i2)) self.msg['BIOS'] = dict(zip(self.bios,b1)) # ceshi = ComputerMessage("hequn") # ceshi.GetMemoryMessage() # print(ceshi.msg)