参数1: WMI 命名空间的对象路径,比如: Root\cimv2 或 Root\microsoft\windows\storage 或 \\.\root\default 等 参数2: 计算机系统硬件的类,比如: Win32_PhysicalMemory 或 Win32_OperatingSystem 或 MSFT_PhysicalDisk 等 参数3: 类中包含的属性名称,比如: Index 或 SerialNumber 等,多个名称用空格或逗号分隔,整体用双引号包括。 为空或 * 时,检索该类中所有属性。比如: "Caption Description SettingID" 或 Caption,Description,SettingID 参数4: where命令,比如: "where Priority >= 11" 或 "where ProcessID > 4000" 或 "where name LIKE '[A-P]%'" 等 /help: 显示本帮助。pecmd 脚本中应开启 set^ EnviMode=1 再 /help,否则会错乱。 示例: wmi_x86.exe Root\cimv2 Win32_DiskDrive wmi_x86.exe Root\cimv2 Win32_DiskDrive Index,SerialNumber 注意: 如果调用wcs,最好是开一个新进程,避免莫名其妙的问题: exec* -err+ -incmd a=pecmd load "%CurDir%\wmi.wcs" 例: 获取硬盘序列号: exec* -err+ -incmd a=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_DiskDrive Index,SerialNumber mess~ %a% 获取主板序列号: exec* -err+ -incmd b=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_BaseBoard SerialNumber mess~ %b% 获取 CPU 编号: exec* -err+ -incmd c=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_Processor DeviceID,ProcessorId mess~ %c% 获取物理内存序列号: exec* -err+ -incmd d=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_PhysicalMemory "DeviceLocator SerialNumber" mess~ %d% 获取网络适配器信息: exec* -err+ -incmd e=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_NetworkAdapter Index,Name,MACAddress,GUID,PNPDeviceID,NetConnectionID,Speed,NetConnectionStatus,NetEnabled mess~ %e% 获取操作系统信息: exec* -err+ -incmd f=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_OperatingSystem "Caption CSDVersion Version BuildNumber CodeSet CountryCode BootDevice SystemDevice SystemDirectory" mess~ %f% 获取磁盘信息: exec* -err+ -incmd g=pecmd load "%CurDir%\wmi.wcs" Root\microsoft\windows\storage MSFT_PhysicalDisk "DeviceId SpindleSpeed MediaType BusType" mess~ %g% 获取网络信息: exec* -err+ -incmd h=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_NetworkAdapterConfiguration "Index Description MACAddress IPSubnet DefaultIPGateway DNSServerSearchOrder DHCPServer IPAddress DHCPEnabled IPEnabled" mess~ %h% 获取smbios内存信息: exec* -err+ -incmd h=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_SMBIOSMemory "DeviceID Description StartingAddress EndingAddress" mess~ %h% 获取操作系统完整信息: exec* -err+ -incmd i=pecmd load "%CurDir%\wmi.wcs" Root\cimv2 Win32_OperatingSystem mess~ %i% 如果实在不想开一个新进程,也可以强制在本进程 load,返回变量名为 WbemInformation: load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_DiskDrive Index,SerialNumber mess~ 硬盘序列号:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_BaseBoard SerialNumber mess~ 主板序列号:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_Processor DeviceID,ProcessorId mess~ cpu编号:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_PhysicalMemory "DeviceLocator SerialNumber" mess~ 物理内存序列号:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_NetworkAdapter Index,Name,MACAddress,GUID,PNPDeviceID,NetConnectionID,Speed,NetConnectionStatus,NetEnabled mess~ 网络适配器:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_OperatingSystem "Caption CSDVersion Version BuildNumber CodeSet CountryCode BootDevice SystemDevice SystemDirectory" mess~ 操作系统:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\microsoft\windows\storage MSFT_PhysicalDisk "DeviceId SpindleSpeed MediaType BusType" mess~ 磁盘信息:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_NetworkAdapterConfiguration "Index Description MACAddress IPSubnet DefaultIPGateway DNSServerSearchOrder DHCPServer IPAddress DHCPEnabled IPEnabled" mess~ 网络信息:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_SMBIOSMemory "DeviceID Description StartingAddress EndingAddress" mess~ smbios内存信息:\n%WbemInformation% load -this "%CurDir%\wmi.wcs" Root\cimv2 Win32_OperatingSystem mess~ 操作系统完整信息:\n%WbemInformation% where命令: //获取本地计算机上的记事本进程。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where name='Notepad.exe'" mess~ %a% //查询从进程优先级大于或等于 11 的 Win32_Process 类中的进程中选择 Name 属性。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process Name "where Priority >= 11" mess~ %a% //获取 ProcessID 值大于 4000 的进程。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where ProcessID >= 4000" mess~ %a% //搜索名称以“H”和“N”之间的字母开头(不区分大小写)的进程。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where Name LIKE '[H-N]otepad.exe'" mess~ %a% //搜索名称以 A 和 P 之间的字母开头(不区分大小写)的所有进程,后跟任意组合的零个或多个字母。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where name LIKE '[A-P]%'" mess~ %a% //获取名称不以下列任何字母开头的进程:A、S、W、P、R、C、U、N,后跟零个或多个字母。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where name LIKE '[^ASWPRCUN]%'" mess~ %a% //获取名称以“calc”开头的进程。 WQL 中的 % 符号等效于正则表达式中的星号 (*) 符号。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where Name LIKE 'calc%'" mess~ %a% //获取名称具有以下模式的进程:“c_lc.exe”,其中下划线字符表示任意一个字符。 此模式匹配calc.exe到czlc.exe或c9lc.exe的任何名称,但不匹配“c”和“l”用多个字符分隔的名称。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where Name LIKE 'c_lc.exe'" mess~ %a% //获取名为 WLIDSVC.exe 的进程。 即使查询使用 Like 关键字,也需要完全匹配,因为值不包含任何通配符。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where name LIKE 'WLIDSVC.exe'" mess~ %a% //获取对 IntallDate 属性具有 null 值的进程。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_Process * "where InstallDate is null" mess~ %a% //相反,以下命令获取 Description 属性具有 null 值的用户帐户。 即使大多数用户帐户对 Description 属性没有任何值,此命令也不会返回任何用户帐户。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where Description is null" mess~ %a% //若要查找没有 Description 属性值的用户帐户,请使用相等运算符获取空字符串。 若要表示空字符串,请使用两个连续的单引号。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where Description = ''" mess~ %a% //以下 WQL 查询仅返回已加入域的计算机的本地用户帐户。 True 和 False 不区分大小写。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where LocalAccount = True" mess~ %a% //若要查找域帐户,请使用 False 值,如以下示例所示。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where LocalAccount = False" mess~ %a% //若要查找名称包含单引号的用户,请使用反斜杠对单引号进行转义,如以下命令中所示。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where Name = 'Tim O\'Brian'" mess~ %a% //若要转义反斜杠,请使用第二个反斜杠字符,如以下命令中所示。 exec* -err+ -incmd a=pecmd load "%CurDir%\part\setup.wcs" Root\cimv2 Win32_UserAccount * "where Caption = 'Fabrikam\\TimO'" mess~ %a%
5大出一个通过smbios获取内存信息的代码
826773297 5大出一个通过smbios获取内存信息的代码
wmi_x86.exe Root\cimv2 Win32_SMBIOSMemory "StartingAddress EndingAddress DeviceID Description"
或
wmi_x86.exe Root\cimv2 Win32_SMBIOSMemory
学习学习
谢谢大佬
顶
感谢分享!
如果PE没有装齐全支持WMI的话,是不能这个脚本的,对吗?
同问楼上问题
mxlee 同问楼上问题
这,我哪里知道呢,你得试试啊
已试,不成,不过补足组件也很简单
感谢分享
走過路過不容錯過
看着信息好丰富!
我的PE不行
非常感谢!辛苦了!