WMI脚本入门

合集下载

windows cmd 命令脚本大全

windows  cmd 命令脚本大全

winver 检查Windows版本wmimgmt.msc 打开Windows管理体系结构(wmi) wupdmgr Windows更新程序wscript Windows脚本宿主设置write 写字板winmsd 系统信息wiaacmgr 扫描仪和照相机向导winchat xp自带局域网聊天mem.exe 显示内存使用情况msconfig.exe 系统配置实用程序mplayer2 简易widnows media playermspaint 画图板mstsc 远程桌面连接mplayer2 媒体播放机magnify 放大镜实用程序mmc 打开控制台mobsync 同步命令dxdiag 检查directx信息drwtsn32 系统医生devmgmt.msc 设备管理器dfrg.msc 磁盘碎片整理程序diskmgmt.msc 磁盘管理实用程序dcomcnfg 打开系统组件服务ddeshare 打开dde共享设置dvdplay dvd播放器net stop messenger 停止信使服务net start messenger 开始信使服务notepad 打开记事本nslookup 网络管理的工具向导ntbackup 系统备份和还原narrator 屏幕“讲述人”ntmsmgr.msc 移动存储管理器ntmsoprq.msc 移动存储管理员操作请求netstat -an (tc)命令检查接口syncapp 创建一个公文包sysedit 系统配置编辑器sigverif 文件签名验证程序sndrec32 录音机shrpubw 创建共享文件夹secpol.msc 本地安全策略syskey 系统加密,一旦加密就不能解开,保护Windows xp系统的双重密码services.msc 本地服务设置sndvol32 音量控制程序sfc.exe 系统文件检查器sfc /scannow windows文件保护tsshutdn 60秒倒计时关机命令tourstart xp简介(安装完成后出现的漫游xp程序)taskmgr 任务管理器eventvwr 事件查看器eudcedit 造字程序explorer 打开资源管理器packager 对象包装程序perfmon.msc 计算机性能监测程序progman 程序管理器regedit.exe 注册表rsop.msc 组策略结果集regedt32 注册表编辑器rononce -p 15秒关机regsvr32 /u *.dll 停止dll文件运行regsvr32 /u zipfldr.dll 取消zip支持cmd.exe cmd命令提示符chkdsk.exe chkdsk磁盘检查certmgr.msc 证书管理实用程序calc 启动计算器charmap 启动字符映射表cliconfg sql server 客户端网络实用程序clipbrd 剪贴板查看器conf 启动netmeetingcompmgmt.msc 计算机管理cleanmgr 垃圾整理ciadv.msc 索引服务程序osk 打开屏幕键盘odbcad32 odbc数据源管理器oobe/msoobe /a 检查xp是否激活lusrmgr.msc 本机用户和组logoff 注销命令iexpress 木马捆绑工具,系统自带nslookup ip地址侦测器fsmgmt.msc 共享文件夹管理器utilman 辅助工具管理器gpedit.msc 组策略以下为Windows操作系统的常用运行命令,执行这些命令,就能打开系统对应的相关实用程序,如果大家能基本利用,就能检查并修复系统的最基本的故障,除注销,关闭系统命令外,其它所有命令,大家不妨一试!!运行/输入CMD/输入对应的相关实用程序:. 打开C:\Documents and Settings\XXX(当前登录Windows XP的用户名) .. 打开Windows XP所在的盘符下的Documents and Settings文件夹... 打开“我的电脑”选项。

wmi文档

wmi文档

问题1:WMI 是什么,它能帮我做什么?Windows 管理规范(Windows Management Instrumentation)是一项核心的Windows 管理技术;用户可以使用WMI 管理本地和远程计算机。

WMI 通过编程和脚本语言为日常管理提供了一条连续一致的途径。

例如,用户可以:•在远程计算机器上启动一个进程。

•设定一个在特定日期和时间运行的进程。

•远程启动计算机。

•获得本地或远程计算机的已安装程序列表。

•查询本地或远程计算机的Windows 事件日志。

WMI 中的“Instrumentation”特指WMI 可以获得关于计算机内部状态的信息,这与汽车仪表盘获得并显示引擎的状态信息非常类似。

WMI 对磁盘、进程、和其他Windows 系统对象进行建模,从而实现“指示”功能。

这些计算机系统对象采用类来建立模型,例如Win32_LogicalDisk 或Win32_Process;如您所料,Win32_LogicalDisk 类用于建立在计算机上安装的逻辑磁盘的模型,Win32_Process 类用于建立正在计算机上运行的任何进程的模型。

这些类基于一个名为通用信息模型(Common Information Model,CIM)的可扩展架构。

CIM 架构是分布式管理任务组(Distributed Management Task Force)的一个公开标准( ).WMI 的功能还包括事件触发、远程调用、查询、查看、架构的用户扩展、指示等等。

想进一步了解WMI,请访问/library/default.asp并搜索关键词“About WMI”。

返回页首问题2:WMI 适用于那些平台?WMI 适用于所有最新版本的Windows。

WMI 附带在Windows Me、Windows 2000、Windows XP 和Windows Server 2003 之中。

对于Windows 98 和Windows NT 4.0,可以访问/downloads. 并搜索“Windows Management Instrumentation (WMI) CORE 1.5 (Windows 95/98/NT 4.0)”。

node-wmic 用法

node-wmic 用法

node-wmic 用法Node-wmi是一个Node.js模块,用于通过WMI(Windows Management Instrumentation)与Windows系统交互。

以下是Node-wmi的基本用法:首先,安装Node-wmi模块:```bashnpm install wmi```然后,在你的Node.js脚本中引入Node-wmi模块:```javascriptconst wmi = require('wmi');```接着,使用`wmi.query()`方法执行WMI查询,并传入一个包含查询条件的字符串作为参数。

例如,以下代码列出了所有的硬盘驱动器:```javascriptwmi.query('SELECT * FROM Win32_LogicalDisk').then((data) => { data.forEach((disk) => {console.log(`Name: ${disk.VolumeLabel}, Size: ${disk.Size}, FreeSpace: ${disk.FreeSpace}`);});}).catch((err) => {console.error(err);});```这段代码首先导入`wmi`模块,然后使用`wmi.query()`方法执行WMI 查询。

查询结果是一个Promise对象,所以我们使用`.then()`方法处理查询结果,并使用`.catch()`方法处理错误。

在查询结果中,每个逻辑磁盘都是一个数组,包含`VolumeLabel`(卷标)、`Size`(大小)、`FreeSpace`(可用空间)等属性。

我们通过遍历数组,输出每个磁盘的属性。

需要注意的是,Node-wmi只能访问本地系统的WMI信息。

如果要访问远程系统的WMI信息,需要使用其他工具,例如PowerShell的`Get-WmiObject`命令。

wmi用法

wmi用法

wmi用法
WMI(Windows Management Instrumentation)是一种用于管理和监控Windows操作系统的技术。

它提供了一组用于查询和控制系统信息的接口和命令行工具。

以下是一些常见的WMI用法示例:
1. 查询系统信息:
使用WMI可以获取许多系统信息,如操作系统版本、计算机名称、处理器信息等。

可以使用命令行工具wmic或者编程语言中的WMI接口来获取这些信息。

2. 执行系统管理任务:
WMI可以用于执行一些系统管理任务,比如创建和管理用户帐户、启动和停止服务、修改系统设置等。

可以使用脚本语言(如VBScript、PowerShell)或编程语言中的WMI接口来完成这些任务。

3. 监控系统性能:
使用WMI可以获取各种系统性能信息,例如CPU利用率、内存使用情况、磁盘空间等。

可以编写脚本或使用监控工具来收集和分析这些信息,以便进行性能优化和故障排查。

4. 远程管理:
WMI支持通过网络远程管理Windows系统,可以在远程计算机上执行各种管理任务,如远程启动/关闭计算机、安装软件、修改注册表等。

需要有相应的权限和网络访问权限。

5. 事件监视与处理:
WMI可以监视系统中发生的各种事件,如启动和关闭进程、文件修改、服务状态变化等,并可以触发相应的操作。

可以使用脚本或编程语言中的WMI接口来处理这些事件。

请注意,WMI的具体用法和语法取决于使用的编程语言或工具,你可以参考相关文档和教程来了解更多详细信息。

WMI入门(一):什么是WMI

WMI入门(一):什么是WMI

WMI⼊门(⼀):什么是WMI WMI出现⾄今已经⼆⼗多年了,但很多⼈对它并不熟悉。

知道它很好很强⼤,但不知道它从哪⾥来,怎么⼯作,使⽤范围是什么?现在我跟⼤家说说我的理解。

WMI有⼀组API。

我们不管使⽤VBScript、PowerShell脚本还是利⽤C#的来访问WMI的类库,都是因为WMI向外暴露的⼀组API。

这些API是在系统安装WMI模块的时候安装的,通过他们我们能够能拿到我们想要的类。

WMI有⼀个存储库。

尽管WMI的多数实例数据都不存储在WMI中,但是WMI确实有⼀个存储库,⽤来存放提供程序提供的类信息,或者称为类的蓝图或者Schema。

WMI有⼀个Service。

WMI总是能够响应⽤户的访问,那是因为它有⼀个⼀直运⾏的Windows服务,名字叫Winmgmt。

停⽌这个服务,所有对WMI的操作都将没有反应。

WMI是可扩展的。

⼈⼈都知道WMI能⼲很多事情,读取本机硬盘信息、读取远程计算机的⽤户信息、读取域⽤户信息等等。

基本上,你能想到的获取或者更改资源的操作,它都能⼲。

可谓吃得少,⼲得多。

它为什么这么能⼲呢?这基于WMI的可扩展性。

WMI对资源的操作,不是它⾃⼰实现了什么⽅法,⽽完全取决于向它注册的提供程序。

WMI是管理员⽇常必备的强⼤⼯具之⼀,是脚本伴侣。

当然也可以把⼀个⼤型系统建⽴在WMI以及WMI的提供程序之上。

以下给两个使⽤WMI的例⼦:⽰例⼀:本⽰例利⽤VB Script检查本机的物理内存量:strComputer = "."Set wbemServices = Getobject("winmgmts:\\" & strComputer)Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")For Each wbemObject In wbemObjectSetWScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemoryNext⽰例⼆:本⽰例利⽤PowerShell检查本机的逻辑硬盘情况:PS C:\Users\v-lukez> Get-WmiObject -Class Win32_LogicalDisk结语: WMI功能强⼤,⽽且⼀直在发展,但是因为⽤的⼈不多,所以⼀直不温不⽕。

利用wmic对Windows主机批量执行脚本

利用wmic对Windows主机批量执行脚本

利用wmic对Windows主机批量执行脚本2014年11月13日AM 10:53与类Unix操作系统相比较,Windows系统由于对字符界面的支持不完善,并没有与类Unix系统的shell可以相提并论的工具(cmd的命令行特性难用程度与shell相比简直令人发指,虽然目前Windows推出所谓的PowerShell,但要跟上bash、korn shell等前辈还需要时间来沉淀)。

一直以来,对于Windows进行批量管理大多依靠于图形界面,效率低下且可靠性不足。

其实Windows本身提供了WMI管理规范和接口,专用于支持命令行方式的系统管理,更推出wmic工具来给系统管理员使用,以下是百度百科对于wmic的介绍:WMIC扩展WMI(Windows Management Instrumentation,Windows管理规范),提供了从命令行接口和批命令脚本执行系统管理的支持。

在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程API,或者使用象CIM Studio之类的工具。

如果不熟悉C++之类的编程语言或VBScript之类的脚本语言,或者不掌握WMI名称空间的基本知识,要用WMI管理系统是很困难的。

WMIC改变了这种情况,为WMI名称空间提供了一个强大的、友好的命令行接口。

概念的介绍总是容易让读者云里雾里,以下试验将演示如何使用wmic以及Windows共享功能来对批量服务器执行一个离线安全扫描脚本并取回结果。

试验背景:现需要对批量Windows Server服务器进行离线安全扫描,即登录到每一台服务器执行一个vbs脚本,脚本会生成扫描结果文件,然后将结果文件下载到本地。

倘若服务器数量不多,那么一台台登录执行也就罢了,但当目标服务器数量达到一定数量后,再手工进行此操作,就成为一件繁琐重复的工作。

有人说,懒惰是推动人类文明不断进步的源动力。

认识win强大的管理工具——WMI(脚本篇)

认识win强大的管理工具——WMI(脚本篇)
pwd="Password"
k="MicrosoftIISv2"'赋予命名空间
setMyWMIObj=CreateObject("WbemScripting.SWbemLocator")
setProObj=MyWMIObj.ConnectServer(Computer,"root/"&k,user,pwd)
pwd="Password"
k="cimv2"'赋予命名空间
setMyWMIObj=CreateObject("WbemScripting.SWbemLocator")
setProObj=MyWMIObj.ConnectServer(Computer,"root/"&k,user,pwd)
信息来源:邪恶八进制安全小组
好长时间没有写东西了,由于本人的文笔不怎么好,所以大家不要笑我。
以下内容均为自己理解的,如有错误之处还请大家指出。
我的技术面很窄,所以以下内容中的代码均为ASP+VBScript。
正文:
----------------------------------------------------------------------------------------------
[原创]认识win强大的管理工具——WMI(脚本篇)
文章标题:[原创]认识win强大的管理工具——WMI(脚本篇)顶部 勇敢的风 发布于:2005-06-1511:58 [楼主][原创]认识win强大的管理工具——WMI(脚本篇)

VBS脚本使用WMI操作注册表

VBS脚本使用WMI操作注册表

VBS脚本使用WMI操作注册表1.'VBS脚本使用WMI操作注册表,从微软弄下来的,整理了一下,弄成最简版,简版,常用版,以便与快速查找。

2.oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath3.4.oReg.SetExpandedStringValue HKEY_LOCAL_MACHINE,str KeyPath,strValueName,strValue5.oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,s trValueName,strValue6.oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPat h,strValueName,dwValue7.oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strPath,strV alueName,uBinary8.oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,strKeyP ath,strValueName,arrStringValues9.10.oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath11.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trStringValueName12.13.oReg.GetExpandedStringValue HKEY_LOCAL_MACHIN E,strKeyPath,strValueName,strValue14.oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyP ath,strValueName,dwValue15.oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPa th,strValueName,strValue16.oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPa th,strValueName,uBinary17.oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,arrStringValues18.19.'-------------------------------------------------------------------------------------------20.21.Const HKEY_CLASSES_ROOT = &H8000000022.Const HKEY_CURRENT_USER = &H8000000123.Const HKEY_LOCAL_MACHINE = &H8000000224.Const HKEY_USERS = &H8000000325.Const HKEY_CURRENT_CONFIG = &H8000000526.27.' 创建注册表项28.const HKEY_LOCAL_MACHINE = &H8000000229.strComputer = "."30.Set StdOut = WScript.StdOut31.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_32.strComputer & "\root\default:StdRegProv")33.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"34.oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath35.36.'创建多字符串值37.const HKEY_LOCAL_MACHINE = &H8000000238.strComputer = "."39.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_40.strComputer & "\root\default:StdRegProv")41.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"42.strValueName = "Multi String Value Name"43.arrStringValues = Array("first string", "second string",_44."third string", "fourth string")45.oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,strK eyPath,_46.strValueName,arrStringValues47.48.49.'创建扩展的字符串值50.const HKEY_LOCAL_MACHINE = &H8000000251.strComputer = "."52.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_53.strComputer & "\root\default:StdRegProv")54.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"55.strValueName = "Expanded String Value Name"56.strValue = "%PATHEXT%"57.oReg.SetExpandedStringValue HKEY_LOCAL_MACHINE ,strKeyPath,strValueName,strValue58.59.'创建字符串和 DWORD 值60.const HKEY_LOCAL_MACHINE = &H8000000261.strComputer = "."62.Set StdOut = WScript.StdOut63.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_64.strComputer & "\root\default:StdRegProv")65.strKeyPath = "SOFTWARE\System Admin Scripting Guide"66.strValueName = "String Value Name"67.strValue = "string value"68.oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPat h,strValueName,strValue69.strValueName = "DWORD Value Name"70.dwValue = 8271.oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKey Path,strValueName,dwValue72.73.74.75.'删除注册表项76.77.const HKEY_LOCAL_MACHINE = &H8000000278.strComputer = "."79.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_80.strComputer & "\root\default:StdRegProv")81.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"82.oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath83.84.85.'删除注册表值86.87.const HKEY_LOCAL_MACHINE = &H8000000288.strComputer = "."89.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_90.strComputer & "\root\default:StdRegProv")91.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"92.strDWORDValueName = "DWORD Value Name"93.strExpandedStringValueName = "Expanded String Val ue Name"94.strMultiStringValueName = "Multi String Value Name"95.strStringValueName = "String Value Name"96.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trDWORDValueName97.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trExpandedStringValueName98.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trMultiStringValueName99.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trStringValueName100.101.102.'枚举注册表值和类型103.'枚举子项104.'列出注册表文件105.'监视注册表子项事件106.'监视注册表子树事件107.'读取二进制注册表值108.109.const HKEY_LOCAL_MACHINE = &H80000002110.strComputer = "."111.Set StdOut = WScript.StdOut112.Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_113.strComputer & "\root\default:StdRegProv")114.strKeyPath = "SOFTWARE\Microsoft\Windows NT\Cur rentVersion"115.strValueName = "LicenseInfo"116.oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPa th,_117.strValueName,strValue118.For i = lBound(strValue) to uBound(strValue)119.StdOut.WriteLine strValue(i)120.Next121.122.'读取 MultiString 值123.const HKEY_LOCAL_MACHINE = &H80000002124.strComputer = "."125.Set StdOut = WScript.StdOut126.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_127.strComputer & "\root\default:StdRegProv")128.strKeyPath = "SYSTEM\CurrentControlSet\Services\Ev entlog\System"129.strValueName = "Sources"130.oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,str KeyPath,_131.strValueName,arrValues132.For Each strValue In arrValues133.StdOut.WriteLine strValue134.Next135.136.137.138.'读取扩展的字符串值139.const HKEY_LOCAL_MACHINE = &H80000002140.strComputer = "."141.Set StdOut = WScript.StdOut142.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_143.strComputer & "\root\default:StdRegProv")144.strKeyPath = "SOFTWARE\Microsoft\Windows NT\Cur rentVersion\WinLogon"145.strValueName = "UIHost"146.oReg.GetExpandedStringValue HKEY_LOCAL_MACHIN E,strKeyPath,_147.strValueName,strValue148.StdOut.WriteLine "The Windows logon UI host is: " & strValue149.150.151.152.'读取字符串和 DWORD 值153.154.const HKEY_CURRENT_USER = &H80000001155.const HKEY_LOCAL_MACHINE = &H80000002156.strComputer = "."157.Set StdOut = WScript.StdOut158.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" &_159.strComputer & "\root\default:StdRegProv")160.strKeyPath = "Console"161.strValueName = "HistoryBufferSize"162.oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyP ath,strValueName,dwValue163.StdOut.WriteLine "Current History Buffer Size: " & dw Value164.strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"165.strValueName = "TrustPolicy"166.oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPa th,strValueName,strValue167.StdOut.WriteLine "Current WSH Trust Policy Value: " & strValue168.169.'-------------------------------------------------------------------------------------------170.171.Const HKEY_CLASSES_ROOT = &H80000000172.Const HKEY_CURRENT_USER = &H80000001173.Const HKEY_LOCAL_MACHINE = &H80000002174.Const HKEY_USERS = &H80000003175.Const HKEY_CURRENT_CONFIG = &H80000005176.177.strComputer = "."178.Set StdOut = WScript.StdOut179.Set oReg=GetObject("winmgmts:{impersonationLevel =impersonate}!\\" & strComputer & "\root\default:StdRegProv" )180.181.182.183.'创建注册表项184.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"185.oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath 186.187.'创建多字符串值188.189.strValueName = "Multi String Value Name"190.arrStringValues = Array("first string", "second string", " third string", "fourth string")191.oReg.SetMultiStringValue HKEY_LOCAL_MACHINE,strK eyPath,strValueName,arrStringValues192.193.'创建扩展的字符串值194.strValueName = "Expanded String Value Name"195.strValue = "%PATHEXT%"196.oReg.SetExpandedStringValue HKEY_LOCAL_MACHINE ,strKeyPath,strValueName,strValue197.198.'创建字符串199.strValueName = "String Value Name"200.strValue = "string value"201.oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPat h,strValueName,strValue202.203.'创建DWORD 值204.strValueName = "DWORD Value Name"205.dwValue = 82206.oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKey Path,strValueName,dwValue207.208.'创建二进制值209.strValueName = "Binary Value Name"210.uBinary = Array(1,0,0,0)211.oReg.SetBinaryValue HKEY_LOCAL_MACHINE,strPath,s trValueName,uBinary212.213.214.'删除注册表项215.strKeyPath = "SOFTWARE\System Admin Scripting Gui de"216.oReg.DeleteKey HKEY_LOCAL_MACHINE, strKeyPath 217.218.219.'删除注册表值220.221.strDWORDValueName = "DWORD Value Name"222.strExpandedStringValueName = "Expanded String Val ue Name"223.strMultiStringValueName = "Multi String Value Name"224.strStringValueName = "String Value Name"225.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trDWORDValueName226.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trExpandedStringValueName227.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trMultiStringValueName228.oReg.DeleteValue HKEY_LOCAL_MACHINE,strKeyPath,s trStringValueName229.230.231.'''''''''''''''''''''''''''''''''''''''''''''''''枚举注册表值和类型232.'''''''''''''''''''''''''''''''''''''''''''''''''枚举子项233.'''''''''''''''''''''''''''''''''''''''''''''''''列出注册表文件234.'''''''''''''''''''''''''''''''''''''''''''''''''监视注册表子项事件235.'''''''''''''''''''''''''''''''''''''''''''''''''监视注册表子树事件236.237.'读取 MultiString 值238.strKeyPath = "SYSTEM\CurrentControlSet\Services\Ev entlog\System"239.strValueName = "Sources"240.oReg.GetMultiStringValue HKEY_LOCAL_MACHINE,str KeyPath,strValueName,arrValues241.For Each strValue In arrValues242.StdOut.WriteLine strValue243.Next244.245.'读取扩展的字符串值246.strKeyPath = "SOFTWARE\Microsoft\Windows NT\Cur rentVersion\WinLogon"247.strValueName = "UIHost"248.oReg.GetExpandedStringValue HKEY_LOCAL_MACHIN E,strKeyPath,strValueName,strValue249.StdOut.WriteLine "The Windows logon UI host is: " & strValue250.251.'读取字符串值252.strKeyPath = "Console"253.strValueName = "HistoryBufferSize"254.oReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue255.StdOut.WriteLine "Current History Buffer Size: " & dw Value256.257.'读取 DWORD 值258.strKeyPath = "SOFTWARE\Microsoft\Windows Script Host\Settings"259.strValueName = "TrustPolicy"260.oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPa th,strValueName,strValue261.StdOut.WriteLine "Current WSH Trust Policy Value: " & strValue262.263.'读取二进制注册表值264.strKeyPath = "SOFTWARE\Microsoft\Windows NT\Cur rentVersion"265.strValueName = "LicenseInfo"266.oReg.GetBinaryValue HKEY_LOCAL_MACHINE,strKeyPa th,strValueName,strValue267.For i = lBound(strValue) to uBound(strValue)268.StdOut.WriteLine strValue(i)269.Next。

WMI轻松入门

WMI轻松入门

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer
Set objSWbemObjectSet = objSWbemServices.InstancesOf("Win32_Processor")
◎WMI轻松入门之一
一、基本概念
其实我给文章起这样的名字,绝对没有轻视WMI的意思,事实上就连微软也有“WMI非常难于学习而且更难于使用”的说法,在近日的学习过程中更感觉到了WMI检索功能的强大,之所以起个“轻松入门”的名字,我只是有感于外国人写教程在思路上和国人不太一致,西方式的幽默看起来困难无比,再加上一上手就在类的基本结构上展开讨论,吓跑了无数Vbs的爱好者,想从国人分割成三部分,题目只能大致起了,见谅。
Set objSWbemObjectSet = objSWbemServices.ExecQuery("select ProcessorId from
For Each objSWbemObject In objSWbemObjectSet
Wscript.echo "CPU的型号为:" &
Next
请注意,这两个脚本虽然简单,却代表了WMI脚本设计中最普遍的东西,可以说是很典型的脚本。让我们来仔细观察一下这两个脚本,讨论讨论一下脚本访问WMI的基本方法:我们可以看到整个脚本的执行过程基本相同:
InstancesOf方法的语法参数格式如下:
SwbemServices.InstancesOf(strClass)

WMI应用技术初探

WMI应用技术初探

来命 名 计算 机 的物 理 和逻 辑单 元 的标 准 的命 名 系统 ( 称 为命 名模 式) 或 ,例 如 硬盘 的逻 辑
分 区 、正 在运行 的应用 的一 个实例 ,或 者一条 电缆 。 CM是 一 个 面 向对 象 的 模 型 ,使 用 一 组 面 向 对 象 的术 语 进 行 描 述 。C M包 含 类 I I (l s,类 是 被管 理单元 的模 板。类 的 实例称 为 对象 ( bet,对象 代表 着底 层 系统 的一 Ca ) s O jc)

2 0・
W MI 用技术初探 应
O八 一科 技
WMI h  ̄用技术初探
李坤林 李长峰
广 元 6 8 1) 2 0 7
( 零八 一 电子 集 团科 技公 司软件 室

要 :本 文主 要介 绍 了wM I 术 ,初 步探 讨 了利 用WMI 技 来获取 计 算机 的一 些基 本
信 息 ,比如操作 系统 、磁 盘 以及 网络 等相 关信 息 的基本 方法 。
域来 说 都是 共 同 的。第 二层 是公 共 模型 (o m n Moe) C m o d1 ,这一 层包 含 的类定 义对 于特定
的管 理 领 域 来 说 是 公 共 的 ,但 与 具体 的操 作 系 统 和 系 统 设 计 无关 。第 三 层 是 扩 展 模 型
关 键 词 :W MIMM I M WB M模 型 C C MO E
1 引 言
与 以前 的操作 系统相 比 , n o sKX 的优点 之一 是具有 更 好 的可管理 性 。例如 它支 Widw 2 / P
持Wid w2 0 服 务器终 端服 务下 的远程 管理模式 , n o s0 0 支持Mirsf coot 管理控 制 台( C , 有一 MM )再 个就 是支 持WM 。 I WMI 是Wi 0 sMaa e e tIs n w n gm n nt nai 的缩 写 , d mmett n o 即Wid w 管 理规 范 。 no s

WMI详解

WMI详解

WMI详解(一)什么是 WMI?WMI最初于 1998 年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在 Windows 2000、Windows XP 和 Windows Server 2003 系列操作系统中核心的管理支持技术。

基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI 是一种规范和基础结构,通过它可以访问、配置、管理和监视所有的—几乎所有的 Windows 资源。

要掌握 WMI 的强大功能和范围,需要考虑以前(或者现在)如何管理并监视 Windows 工作站和服务器。

您可能用过或仍在使用众多的图形化管理工具来管理 Windows 资源—例如磁盘、事件日志、文件、文件夹、文件系统、网络组件、操作系统设置、性能数据、打印机、进程、注册表设置、安全性、服务、共享、用户、组等等。

尽管图形化工具提供了一种功能管理解决方案,它们所共有的东西是什么呢?一种答案是,在 WMI 之前,所有的 Windows 图形化管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。

为什么?因为在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。

这种情况使 Windows 系统管理员无法通过一种简便的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。

通过提供一致的模型和框架,WMI 改变了这种情况—通过模型和框架,所有的 Windows 资源均被描述并公开给外界。

最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!使用 Windows Script Host 和 Microsoft Visual Basic Scripting Edition (VBScript),或任何支持 COM 自动化的脚本语言(例如,ActiveState Corporation 的 ActivePerl),可以编写脚本来管理和自动化企业系统、应用程序和网络的下列方面:•Windows Server 2003、Windows XP 专业版和 Windows 2000 系统管理。

常用wmi查询语句

常用wmi查询语句

WMI(Windows Management Instrumentation)是Windows操作系统中用于管理操作系统的接口,可以通过查询语句获取各种系统信息。

以下是一些常用的WMI查询语句,可以用于获取不同类型的信息:1. 查询系统启动时间:SELECT * FROM Win32_StartupCommand2. 查询当前登录用户:SELECT * FROM Win32_UserAccount WHERE Name='当前用户名'3. 查询磁盘空间使用情况:SELECT * FROM Win32_LogicalDisk WHERE DeviceID='C:\\'4. 查询系统进程信息:SELECT * FROM Win32_Process WHERE Name='进程名'5. 查询系统服务信息:SELECT * FROM Win32_Service WHERE Name='服务名'6. 查询网络连接信息:SELECT * FROM Win32_NetworkAdapter WHERE MACAddress IS NOT NULL7. 查询系统注册表信息:SELECT * FROM Win32_RegistryKey WHERE Name='注册表键名'8. 查询系统硬件信息:SELECT * FROM Win32_BaseBoard WHERE SerialNumber = '硬件序列号'9. 查询系统时间:SELECT * FROM Win32_Timezone WHERE Id = '当前时区'10. 查询系统日志信息:SELECT * FROM Win32_SecurityEvent WHERE EventID = 特定事件ID以上只是列举了一些常见的WMI查询语句,实际上还有更多可以查询的信息。

文件系统驱动编程基础篇之四——Wmi管理规范

文件系统驱动编程基础篇之四——Wmi管理规范

文件系统驱动编程基础篇之四——WMI管理规范一、前略本系列文章为业余编程爱好者而写,仅仅作为初学者的一个借鉴,真正的精华存在于参考资料*中。

知识的积累将经历从薄到厚,再从厚到薄的反复过程,为了打下牢固的基础,请读者务必在阅读本文的基础上花费必要的时间完成参考资料。

参考资料*:1.《Programming the Microsoft Windows driver model》第一版(当前阶段主要阅读资料,阅读第十章)2.《Windows Management Instrumentation (WMI)》(Msdn上关于WMI的标准文档,建议认真阅读)3.《Microsoft Windows Management Instrumentation: Background and Overview》(3,4,5可用作参考,不严谨,且较陈旧)4.《Windows Management Instrumentation: International Support Overview》5.《Microsoft Windows Management Instrumentation: Advantages to Developers》6.百度百科关于WMI有关名词的注释7.《Windows Management Instrumentation (Windows 管理规范) 的秘密》8.《WDM Provider》8.《Managed Object Format (MOF)》(Msdn上关于MOF的标准文档,建议认真阅读)9.《WMI Property Qualifiers》10.《MOF Data Types》11.《COM API for WMI》12.《WMI脚本入门》13.《WQL (SQL for WMI)》阅读基础:了解COM组件的调用方法。

本章目的:了解WMI管理规范在系统下的广泛运用,深入理解MOF,学会编写内核模式和用户模式下的WMI程序。

vbs脚本教程

vbs脚本教程
For Each wbemObject In wbemObjectSet
WScript.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory
Next
脚本示例2,
strComputer = "."
Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/cimv2")
使用objShell的exec方法代替run方法可将运行返回一个WshScriptExec对象,可对结果显示做更多的控制。
运行脚本exam.vbs:
在命令行下输入:cscript exam.vbs
使用重定向符将脚本运行结果输出到文本文件:
cscript exam.vbs > output.txt //覆盖方式
调用命令程序(%COMSPEC%环境变量调用相应操作系统的cmd.exe 或 command.exe)运行脚本,并保持console窗口:
Set objShell = CreateObject("WScript.Shell")
objShell.Run "%COMSPEC% /k ipconfig"
注意,这里没有 For Each
循环,你就可以获得磁盘的属性。因为脚本是返回一个单独的磁盘对象,而不是所有对象的集合。因此也就不用筛选了。
※如何列举磁盘驱动器的属性
磁盘集合的作用总是用来监视和列举的。作为一个系统管理员,你需要知道计算机上的可用磁盘,也需要知道磁盘的序列号、可用空间等信息。在你获得当前磁盘的集合或者单个磁盘的时候,你就可以获得下表列出的所有属性。

用WMIC命令脚本执行WMI任务

用WMIC命令脚本执行WMI任务

用WMIC命令脚本执行WMI任务━━━━━━━━━━━━━━━━━━━━━━━━━━MicrosoftWindowsManagementInstrumentation(WMI)。

中文名字叫Windows管理规范。

从Windows2000开始,WMI(Windows管理规范)就内置于操作系统中,并且成为了Windows 系统管理的重要组成部分。

所以大家很容易就能见到它的,因为我们至少也应该是个Windows2000的使用者了。

下面我将详细介绍它的每个细节,让你从不认识它到喜欢上它。

WMI能做什么?WMI不仅可以获取想要的计算机数据,而且还可以用于远程控制。

远程控制计算机可是大家都喜欢的东西。

很多远程监视控制类软件通常的做法是:在远程计算机上运行服务端后台程序,在本地计算机上运行一个客户器端控制程序,通过这二个程序的勾结来实现对计算机的远程控制。

这种作法的缺点是十分明显的,当服务端程序关了,这种远程监控就无法实现了,因为没有内线了。

而WMI实现的远程监视和控制完全不需要另外装什么服务端的东西,系统默认就将WMI服务给开了。

具体说来,WMI的本领如下:1.获取本地和远程计算机的硬件软件信息。

2.监视本地和远程计算机的软件和服务等运行状况。

3.控制本地和远程计算机的软件和服务运行。

4.高级应用。

如何访问WMI?当我们知道WMI的某些本领后,我们已经很想知道如何认识他并利用他了。

利用WMI有许多途径,简单说来有三种了:1.通过微软给我们提供的各种工具来实现普通查询和操作。

主要包括命令提示符下面的WMIC,还有就是微软给我们提供的WMITOOL,大家可以到微软的网站上免费下载,当然我也可以给大家免费提供。

2.通过自己编写脚本来实现更灵活操作。

要想真正灵活实用,对WSH脚本的熟悉是必须的,当然如果你不熟悉也没有关系,稍后我会给大家详细解释的。

3.通过编写我们自己的程序来访问并操作它。

什么语言都行。

如果用.NET类程序要简单些了,如果用VC等要复杂些了,起码我是这么认为的。

WMI程序详解

WMI程序详解

WMI程序详解前段时间由于项目需要,要求做一个服务器的实时性能监控(CPU、内存、网络利用率等)和读取服务器的硬件配置参数的接口供项目组使用,就是一个类似于鲁大师之类的东东吧...当然第一想法肯定是利用Windows提供的系统标准API函数来完成所需的功能,当然这也应该是当前最理想最有效率的选择了。

但是如果你对API编程不是很熟练的话...那就相当蛋疼了!你知道用API可以做到但是不知道用哪个API,好啊,可以查MSDN。

问题是你连API 名字都不知道...当然,如果你们公司允许你们上国内局域网的话那就好办多了,因为有无数强大的网友会帮你找到答案。

使用API编程的另一个问题是如果你仍旧对API不熟悉的话调用起来相当困难、很不顺手。

还有一种方案就是--->“强大”的WMI,.net平台的程序员可能对这个比较熟悉,WMI即windows管理规范。

通过它可以访问、配置、管理和监视几乎所有的Windows资源。

当然对于程序员而言在WMI体系结构中我们最需要关心的就是WMI提供的程序和接口。

WMI提供程序在WMI和托管资源之间扮演着中间方的角色。

提供程序代表使用者应用程序和脚本从WMI托管资源请求信息,并发送指令到WMI托管资源。

下面是我们利用WMI编程经常要用到的WMI内置提供程序清单,以供编程参考。

1.Active Directory提供程序链接库文件:dsprov.dll命名空间:root\directory\ldap作用:将Active Directory 对象映射到WMI。

2.事件日志提供程序链接库文件:ntevt.dll命名空间:root\cimv2作用:管理Windows 事件日志,例如,读取、备份、清除、复制、删除、监视、重命名、压缩、解压缩和更改事件日志设置。

3.注册表提供程序链接库文件:stdprov.dll命名空间:root\default作用:读取、写入、枚举、监视、创建、删除注册表项和值。

c#WMI获取机器硬件信息(硬盘,cpu,内存等)

c#WMI获取机器硬件信息(硬盘,cpu,内存等)

c#WMI获取机器硬件信息(硬盘,cpu,内存等)using System;using System.Collections.Generic;using System.Globalization;using System.Management;using System.IO;using ;using workInformation;using .Sockets;using System.Runtime.InteropServices;using System.Text;namespace UsbDemo{internal enum WmiType{Win32_Processor,Win32_PerfFormattedData_PerfOS_Memory,Win32_PhysicalMemory,Win32_NetworkAdapterConfiguration,Win32_LogicalDisk}///<summary>///获取硬盘号和CPU号///</summary>public class WmiHelper{public class MachineNumber{static Dictionary<string, ManagementObjectCollection> WmiDict =new Dictionary<string, ManagementObjectCollection>();static MachineNumber(){var names = Enum.GetNames(typeof(WmiType));foreach (string name in names){WmiDict.Add(name, new ManagementObjectSearcher("SELECT * FROM " + name).Get());}}///<summary>///获取硬盘号码///</summary>///<returns></returns>public static string GetHardDiskNumber(){var query = WmiDict[WmiType.Win32_LogicalDisk.ToString()];//var collection = query.Get();string result = string.Empty;foreach (var obj in query){result = obj["VolumeSerialNumber"].ToString();break;}return result;}///<summary>///获取CPU号码///</summary>///<returns></returns>public static string GetCPUNumber(){var query = WmiDict[WmiType.Win32_Processor.ToString()];//var collection = query.Get();string result = string.Empty;foreach (var obj in query){result = obj["Processorid"].ToString();break;}return result;}///<summary>///获取内存编号///</summary>///<returns></returns>public static string GetMemoryNumber(){var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];//var collection = query.Get();string result = string.Empty;foreach (var obj in query){result = obj["PartNumber"].ToString();break;}return result;}///<summary>///获取硬盘信息///</summary>///<returns></returns>public static string HardDiskInfo(){DriveInfo[] drives = DriveInfo.GetDrives();StringBuilder sr = new StringBuilder();foreach (DriveInfo drive in drives){if (drive.IsReady){var val1 = (double)drive.TotalSize / 1024 / 1024;var val2 = (double)drive.TotalFreeSpace / 1024 / 1024;sr.AppendFormat("{0}:{2}/{3}MB/{4}MB/{1}%可⽤;" + Environment.NewLine, , string.Format("{0:F2}", val2 / val1 * 100), drive.DriveFormat, (long)val1, (long)val2); }}return sr.ToString();}///<summary>///获取操作系统信息///</summary>///<returns></returns>public static string OSInfo(){StringBuilder sr = new StringBuilder();sr.AppendFormat("机器名:{0};操作系统:{1};系统⽂件夹:{2};语⾔:{3};.NET:{4};当前⽬录:{5};当前⽤户:{6};",Environment.MachineName,Environment.OSVersion,Environment.SystemDirectory,CultureInfo.InstalledUICulture.EnglishName,Environment.Version,Environment.CurrentDirectory,erName);return sr.ToString();}///<summary>///获取⽹卡信息///</summary>///<returns></returns>public static string NetworkInfo(){StringBuilder sr = new StringBuilder();string host = Dns.GetHostName();IPHostEntry ipEntry = Dns.GetHostByName(host);sr.Append("IPv4:" + ipEntry.AddressList[0] + "/");sr.Append("IPv6:");ipEntry = Dns.GetHostEntry(host);sr.Append("IPv6:" + ipEntry.AddressList[0] + ";");sr.Append("MAC:");var query = WmiDict[WmiType.Win32_NetworkAdapterConfiguration.ToString()];foreach (var obj in query){if (obj["IPEnabled"].ToString() == "True")sr.Append(obj["MacAddress"] + ";");}return sr.ToString();}///<summary>///获取内存信息///</summary>///<returns></returns>public static string MemoryInfo(){StringBuilder sr = new StringBuilder();try{long capacity = 0;var query = WmiDict[WmiType.Win32_PhysicalMemory.ToString()];int index = 1;foreach (var obj in query){//sr.Append("内存" + index + "频率:" + obj["ConfiguredClockSpeed"] + ";");capacity += Convert.ToInt64(obj["Capacity"]);index++;}sr.Append("总物理内存:");sr.Append(capacity / 1024 / 1024 + "MB;");query = WmiDict[WmiType.Win32_PerfFormattedData_PerfOS_Memory.ToString()];sr.Append("总可⽤内存:");long available = 0;foreach (var obj in query){available += Convert.ToInt64(obj.Properties["AvailableMBytes"].Value);}sr.Append(available + "MB;");sr.AppendFormat("{0:F2}%可⽤; ", (double)available / (capacity / 1024 / 1024) * 100);}catch (Exception ex){sr.Append("异常信息:" + ex.Message);}return sr.ToString();}///<summary>///获取CPU信息///</summary>///<returns></returns>public static string CpuInfo(){StringBuilder sr = new StringBuilder();var query = WmiDict[WmiType.Win32_Processor.ToString()];foreach (var obj in query){sr.Append("⼚商:" + obj["Manufacturer"] + ";");sr.Append("产品名称:" + obj["Name"] + ";");sr.Append("最⼤频率:" + obj["MaxClockSpeed"] + ";");sr.Append("当前频率:" + obj["CurrentClockSpeed"] + ";");}return sr.ToString();}}}}using System;using System.Management;namespace UsbDemo{///<summary>/// USB控制设备类型///</summary>public struct ProcessInfo{///<summary>/// USB控制器设备ID///</summary>public String Antecedent;///<summary>/// USB即插即⽤设备ID///</summary>public String Dependent;}class ProcessWatcher{///<summary>/// USB插⼊事件监视///</summary>private ManagementEventWatcher insertWatcher = null;///<summary>/// USB拔出事件监视///</summary>private ManagementEventWatcher removeWatcher = null;///<summary>///添加USB事件监视器///</summary>///<param name="usbInsertHandler">USB插⼊事件处理器</param>///<param name="usbRemoveHandler">USB拔出事件处理器</param>///<param name="withinInterval">发送通知允许的滞后时间</param>public Boolean AddUSBEventWatcher(EventArrivedEventHandler usbInsertHandler, EventArrivedEventHandler usbRemoveHandler, TimeSpan withinInterval) {try{////创建WQL事件查询,⽤于实例创建//var qCreate = new WqlEventQuery("__InstanceCreationEvent",TimeSpan.FromSeconds(1),"TargetInstance ISA 'Win32_Process'");////创建WQL事件查询,⽤于实例删除//var qDelete = new WqlEventQuery("__InstanceDeletionEvent",TimeSpan.FromSeconds(1), "TargetInstance ISA 'Win32_Process'");////创建事件查询的侦听器(ManagementEventWatcher)//var wCreate = new ManagementEventWatcher(qCreate);//var wDelete = new ManagementEventWatcher(qDelete);////事件注册代码//wCreate.EventArrived += (sender, e) =>//{// Console.WriteLine("运⾏:{0}", GetInfo(e.NewEvent));//};//wDelete.EventArrived += (sender, e) =>//{// Console.WriteLine("关闭:{0}", GetInfo(e.NewEvent));//};////异步开始侦听//wCreate.Start();//wDelete.Start();//Console.WriteLine("按任意键停⽌监控");//Console.ReadKey(true);// 进程执⾏监视if (usbInsertHandler != null){WqlEventQuery InsertQuery = new WqlEventQuery("__InstanceCreationEvent", withinInterval, "TargetInstance ISA 'Win32_Process'"); insertWatcher = new ManagementEventWatcher( InsertQuery);insertWatcher.EventArrived += usbInsertHandler;insertWatcher.Start();}// 进程结束监视if (usbRemoveHandler != null){WqlEventQuery RemoveQuery = new WqlEventQuery("__InstanceDeletionEvent", withinInterval, "TargetInstance ISA 'Win32_Process'"); removeWatcher = new ManagementEventWatcher( RemoveQuery);removeWatcher.EventArrived += usbRemoveHandler;removeWatcher.Start();}return true;}catch (Exception){RemoveUSBEventWatcher();return false;}}///<summary>///移去USB事件监视器///</summary>public void RemoveUSBEventWatcher(){if (insertWatcher != null){insertWatcher.Stop();insertWatcher = null;}if (removeWatcher != null){removeWatcher.Stop();removeWatcher = null;}}//输出事件对应的ManagementBaseObject(本例中的Win32_Process实例)的信息static string GetInfo(ManagementBaseObject mobj){var instance = (ManagementBaseObject)mobj["TargetInstance"];return string.Format("{0} - {1}", instance["Name"], DateTime.Now);}///<summary>///定位发⽣插拔的USB设备///</summary>///<param name="e">USB插拔事件参数</param>///<returns>发⽣插拔现象的USB控制设备ID</returns>public static ProcessInfo[] WhoControllerDevice(EventArrivedEventArgs e){ManagementBaseObject instance = e.NewEvent["TargetInstance"] as ManagementBaseObject;return new ProcessInfo[1] { new ProcessInfo { Antecedent = instance["Name"].ToString(), Dependent = instance["Name"].ToString() } };}}}。

WindowsWMIC命令使用详解(附实例)

WindowsWMIC命令使用详解(附实例)

WindowsWMIC命令使用详解(附实例)Windows WMIC命令使用详解(附实例)执行“wmic”命令启动WMIC命令行环境。

这个命令可以在XP 或 .NET Server的标准命令行解释器(cmd.exe)、Telnet会话或“运行”对话框中执行。

这些启动方法可以在本地使用,也可以通过.NET Server终端服务会话使用。

第一次执行WMIC命令时,Windows首先要安装WMIC,然后显示出WMIC的命令行提示符。

在WMIC命令行提示符上,命令以交互的方式执行。

wimic的运行方式可以有两种法:1、搞入wimic进入后输入命令运行,键入wimic后出现wmic:root\cli>时你就可以输入命令了,如输入process显示所有的进程。

不知道有什么命令时可以输入用/?来显示帮助。

exit 是退出交互模式。

具体帮助用法如下:命令行帮助命令例子说明/? 或 -? 显示所有全局开关和别名的语法/ /? /user /? 显示指定全局开关的信息/? class /? 显示某个命令的信息/? memcache /? 显示某个别名的信息/? temperature get /? 显示别名与动词组合的信息/?:Full irq get /?:Full 显示动词的帮助信息如:我要查看process命令的帮助,键入:process/?后显示如下:wmic:root\cli>process /?PROCESS - 进程管理。

提示: BNF 的别名用法。

(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].用法:PROCESS ASSOC [<format specifier>]PROCESS CALL <method name> [<actual param list>]PROCESS CREATE <assign list>PROCESS DELETEPROCESS GET [<property list>] [<get switches>]PROCESS LIST [<list format>] [<list switches>]2、用wimic 后面直接跟命令运行,如wmic process 就显示了所有的进程了。

wmi配置方法

wmi配置方法

wmi配置方法
WMI客户端环境设定
A)打开“计算机管理”,“本地用户和组”->“用户”。

分配相关权限给准备的账号。

B)打开“组件服务”dcomcnfg.exe),“组件服务”->“计算机”->“我的电脑”。

右击选择“属性”->“com安全”
●“访问权限”->“编辑限制”对ANONYMOUS LOGON的远
程访问选择允许)
●“启动和激活权限”->“编辑限制”添加4个允许给用户
C)打开“计算机管理”,“服务和应用程序”->“WMI控件”右击选择“属
性”选择“安全”,在“安全设置”里将帐户的所有权限加上。

D)Windows XP,Server 2003 场合
打开“组策略”(gpedit.msc),“本地计算机策略”->“计算机配置”->“管理模版”->“网络”->“网络连接”
“Windows防火墙”->“标准配置文件”。

右击“windows防火墙:允许远程管理例外”选择属性,设置点“启用”,点“确定”。

E)在Windows XP Professional中,对没有加入的域请按照以下安全设置。

打开“组策略”(gpedit.msc)。

“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”->“网络访问:本地帐户的共享和安全”的“安全设置”改为“经典–本地用户以自己的身份验证”。

c#通过wmi在远程机上执行命令

c#通过wmi在远程机上执行命令

c#中可以通过wmi在远程机上执行命令(wmi:windows management interface 可以通过一个公共的接口访问不同操作系统(windows系统)的构成单元,利用它可以高效的管理远程和本地的计算机。

它也是w2k3,w2k8和xp的管理系统的控制核心),下面是完成这个工作的示范代码:////////////////////////////////////////////////////////////////////////////////////////////////// //ConnectionOptions指定生成wmi连接所需的设置ConnectionOptions connOption = new ConnectionOptions();ername = domain + @"\" + userName;connOption.Password = password;//ManagementPath 包装了生成和分析wmi对象的路径ManagementPath mngPath = new ManagementPath(@"\\" + serverHostName +@"\root\cimv2:Win32_Process");ManagementScope scope = new ManagementScope(mngPath, connOption);scope.Connect();//ObjectGetOptions 类是指定用于获取管理对象的选项ObjectGetOptions objOption = new ObjectGetOptions();//ManagementClass 是表示公共信息模型(CIM) 管理类,通过该类的成员,可以使用特定的WMI 类路径访问WMI 数据ManagementClass classInstance = new ManagementClass(scope, mngPath, objOption); int ProcessId = 0;object[] cmdline = { "cmd /c " + strCommand, path, null, ProcessId };//调用执行命令的方法classInstance.InvokeMethod("Create", cmdline);其中domain是登陆远程机的域名,userName,password是登陆远程机的帐户密码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

动化常用的系统管理任务,因为大多数脚本语言都不能直接调 致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并 公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!
使用 Windows Script ost 和 Microsoft isual asic Scripting dition (
Windows .NET 企业服务器管理。您可以编 脚本来管理 Microsoft Application enter、 perations Manager、

快速启动到 WMI 脚本
让您对 WMI 脚本是什么有一些概念,让我们来看看一个表面看来不怎么重要的任务 — 检索安装在基于 Windows 的远 程计算机中的物理内存的总量。在 WMI 之前,如果没有另外的第三方工具,是不能通过一个脚本来轻松完成这个任务的。 实际上,在 WMI 之前,使用包括操作系统工具的工具确定安装在计算机中内存数量的惟一方法是通过系统属性对话框。今 天, 如果目标计算机上安装了 WMI, 并且有计算机的管理员访问权限, 您就可以使用一个 WMI 脚本来检索在远程 Windows 计 算机上安装的物理内存量,如清单 1 中所示的一样简单。
如果我们 脚本中使用的
步骤。
三个步骤,对于任何用于检索 WMI 托管资源信息的 WMI 脚本来说是共同的。服务
任何 WMI 脚本中,第一个步骤都是建立一个到目标计算机上的 Windows 管理服务的连接。连接到在本地或远程计算机上 的 WMI 与调用 VBScript 的 Getobject 函数并将 WMI 脚本库的名字对象的名称(即“winmgmts:”,后跟目标计算机的名 称)传递到 Getobject 一样简单。
运行清单 2 生成如图 2 中所示的输出。
-2-
图 2 : GetServices.vbs 输出
假设您对服务不感兴趣,但是需要从 Windows 事件日志检索记录。再次使用清单 1 中的脚本模板,您可以很容易地读取 Windows 事件日志,如清单 3 中所演示。在您运行清单 3 之前我们要指出的是,如果您的事件日志包含数千个记录,示例 脚本可能需要用很长的时间运行。
清单 2 :使用 WMI 和 VBScript 检索服务信息
strComputer = "atl-dc-01" Set wbemServices = Getobject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_Service") For Each wbemObject In wbemObjectSet WScript.Echo "Display Name: " & wbemObject.DisplayName & vbCrLf & _ " State: " & wbemObject.State & vbCrLf & _ " Start Mode: " & wbemObject.StartMode Next
用这种方法
InstancesOf 就是此种方法中的一个。
步骤 2: 2:检索 WMI 托管资源的实例
普遍认为,第二个步骤主要取决于要执行的任务。在检索 WMI 托管资源的信息中,步骤 2 与调用 SWbemServices SWbemServices 对象的 InstancesOf 方法一样简单。 正如方法名所示, InstancesOf 返回由资源的类名标识的托管资源的所有实例。 InstancesOf 以 一个 SWbemObjectSet 集合的形式返回所需的资源,通过使用名为 wbemObjectSet 的变量我们在清单 1、2、3 中引用它。 SWbemObjectSet 是 WMI 脚本库中定义的另一个脚本对象。
WMI 脚本入门: 脚本入门:第一部分
Microsoft®Windows®Management Instrumentation (WMI) 大概是我们已知的 Microsoft 保存最好的秘密。尽管如此,但毫 无疑问,WMI 是 Microsoft 主要的针对 Windows 的管理支持技术。这对您来说意味着什么呢?那么,如果您管理 Windows 服务器和工作站,或者如果您创建 Windows 管理应用程序,您就需要了解 WMI。本文是教授您 WMI,更确切地说,是教您 如何使用 WMI 脚本库来创建大批 Windows 系统管理脚本的系列文章中的第一篇。
Windows Server 2003 、 Windows Windows XP 专业版和 Windows 2000 系统管理。您可以编 脚本来
置设置。
• •
HC 启 备 订阅,您可以编写代码以在事件发生时监视并响应事件日志项,监视并响应文件系 统、注册表修改及其他实时的操作系统更改。基本上对 WMI 来说,WMI 事件订阅和通知是在 SNMP 环境中 SNMP 陷阱

连接到 WMI,返回一个对 SWbemServices 对象的引用,我们使用清单 1、2、3 中的名为 wbemServices 的变量 来引用该对象。SWbemServices 是在 WMI 脚本库中定义的一打左右的对象中的一个。WMI 脚本库提供一组用于访问 WMI 基 础结构的通用对象脚本。一旦有一个对 SWbemServices 对象的引用,您就可以调用任何提供了 SWbemServices 的方法;
你说“天哪!真的用六行脚本来检索一台计算机中的内存数量?”之前,让我们先礼貌地插几句话,因为至今尚不 明显的是,您可以使用与在清单 1 中所演示的相同的基本步骤,从任何通过 WMI 公开的 Windows 资源检索配置和状态信 息。
现在,在
假设您想要检索安装在一台远程计算机上的所有服务的名称、状态和启动类型。清单 2 中的示例脚本完全使用清单 1 中使 用过的相同的基本步骤来完成。
网络管理。您可以创建基于 WMI 的脚本来管理网络服务,例如 DNS、D P 和 用 SNMP 的设 。 实时健全监视。使用 WMI 事件
是什么。

C O Systems Management Server、Internet Information Server、Exchange Server 和 SQL Server。

运行清单 1 中的示例脚本,将其复制并粘贴到您最常用的文本编辑器中(notepad.exe 也可以),将分配给 strComputer 变量的值更改为域中一个有效的启用 WMI 的计算机,保存脚本(扩展名为 .vbs),并如图 1 所示运行脚本。
图 1 : GetMemory.vbs 输出

点不可思议,无须任何录入,您应该会看到目标计算机的物理内存量回显到控制台。
清单 3 :读取 Windows 事件日志记录
strComputer = "atl-dc-01" Set wbemServices = Getobject("winmgmts:\\" & strComputer) Set wbemObjectSet = wbemServices.InstancesOf("Win32_NTLogEvent") For Each wbemObject In wbemObjectSet WScript.Echo "Log File: " & wbemObject.LogFile "Record Number: " & wbemObject.RecordNumber "Type: " & wbemObject.Type "Time Generated: " & wbemObject.TimeGenerated "Source: " & wbemObject.SourceName "Category: " & wbemObject.Category "Category String: " & wbemObject.CategoryString "Event: " & wbemObject.EventCode "User: " & er "Computer: " & puterName "Message: " & wbemObject.Message Next
& & & & & & & & & & &
vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf vbCrLf
& & & & & & & & & &
_ _ _ _ _ _ _ _ _ _
-3-
仔细检查清单 1、2 和 3,我们会得出关于这三个脚本的两个非常重要的观察结果。第一个观察结果是,所有三个 脚本都执行相同的三个步骤:脚本连接到 WMI,检索一个 WMI 托管资源,并回显资源的几个属性。第二个重要的观察结果 是, 在每个脚本中, 惟一的更改是标识目标资源的类名 (即分别为 Win32_LogicalMemoryConfiguration、 Win32_Service 和 Win32_NTLogEvent),以及资源的相应属性。
为了
-1-
清单 1 :使用 WMI 和 VBScript 检索总物理内存
相关文档
最新文档