PowerShell 2.0之使用WMI管理Windows(二)PowerShell操作WMI
2010年12月27日
在PowerShell发布之前,标准的操作方法是使用编程脚本API调用一系列COM对象。调用COM客户端代码可以在各种语言中都能使用,只是典型的WMI客户端脚本代码使用VBScript编写,因为这样简单易行。代码会获取CIM对象的实例,并通过WQL查询和获取信息。结果是用标准的foreach循环获得的集合。下例为使用VBS获取winword.exe进程id的winword_pid.vbs脚本,代码如下:
strComputer = "."
classNamespace = "winmgmts:\\" & strComputer & "\root\cimv2"
Set objWMIService = GetObject(classNamespace)
query = "SELECT * from Win32_Process WHERE Name = 'winword.exe'"
Set results = objWMIService.ExecQuery(query)
For Each process in results
Wscript.Echo "ProcessId: " & process.ProcessId
Next
使用Windows Script Host控制台应用宿主cscript.exe执行脚本的结果如图1所示。
图1 执行结果
1 WMI查询工具Get-WmiObject
在PowerShell中针对WMI查找的命令是Get-WmiObject cmdlet,用于将查询发送到CIM对象。通过WMI返回结果会是.NET为CIM对象封装的PowerShell集合,其中包含零到多个System.Management.ManagementObject对象。
与前面冗长的VBS代码不同的是Get-WmiObject选择有意义的默认值,不需要指定特定的主机名,默认为当前计算机。同样也不需要命名空间,默认为root\cimv2命名空间。通常情况下这个命名空间保存大多数需要管理的对象,如文件、进程、服务、网络设置及设备配置。下面使用Get-WmiObject重写前面用VBS获取word的pid的脚本,命名为“winword_pid.ps1”,代码如下:
$query = "SELECT * from Win32_Process WHERE Name='winword.exe'"
Get-WmiObject -Query $query | select ProcessId
执行结果如图2所示。
图2 执行结果
其中用-query参数传递一个完整的WQL查询,WQL语言的SELECT语句能够指定所需的属性,可以用这种方法获取对象属性的子集。在网络上传输大量数据时,可以通过这种方法限制无用数据。在实例中由于运行在本机并使用了通配符*获取所有属性的清单,因此不需要考虑优化网络流量。在这里可以使用简化的别名gwmi获取WMI信息,图3所示使用该命令获取winword.exe进程实例。
图3 使用gwmi别名查询当前系统中的word进程PID
可以使用Get-WmiObject查询在远程主机运行的对象,为此需要提供-computer参数,执行如图4所示的命令。
访问其他主机涉及安全问题,cmdlet默认使用Windows域凭据认证,在这里通过-Credentials参数传递特定的凭据。也可以通过Get-Credential cmdlet获取真实的PSCredential对象,为Get-WmiObject提供凭据。在脚本执行过程中会弹出对话框要求输入用户名和密码,如图5所示。
图4 执行结果
图5 要求输入用户名和密码
作者: 付海军
出处:http://blog.csdn.net/fuhj02
版权:本文版权归作者和csdn共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.shell.tor.hu/
发表评论
-
IIS 服务器没有及时响应启动或控制请求 未启动 启动 world wide web publishing服务 127 找不到指定程序
2012-01-20 10:01 534IIS 服务器没有及时响应启动或控制请求 未启动 启动 wor ... -
vbs脚本:DeleteFolder
2012-01-20 10:01 563vbs脚本:DeleteFolder 2010年08月08日 ... -
QTP使用技巧(1)
2012-01-20 10:01 631QTP使用技巧(1) 2011年06 ... -
PowerDesigner设置MYSQL主键自动增长的方法
2012-01-20 10:01 598PowerDesigner设置MYSQL主键自动增长的方法 ... -
vbs 脚本没事测试玩
2012-01-19 15:03 494vbs 脚本没事测试玩 2011年03月27日 Set ... -
VBS脚本文件大全
2012-01-19 15:03 581VBS脚本文件大全 2011年05月24日 一、自动打开 ... -
自动下载并运行的VBS脚本代码[转载]
2012-01-19 15:03 637自动下载并运行的VBS脚本代码[转载] 2012年01月15 ... -
[值得一看] TCP版backshell的VBS脚本
2012-01-19 15:03 974[值得一看] TCP版backshell ... -
C#程序实现动态调用DLL的研究
2012-01-19 15:02 461C#程序实现动态调用DLL的研究 2011年04月26日 ... -
system32文件夹里的文件详解
2012-01-17 04:49 650system32文件夹里的文件详解 2011年05月23日 ... -
Windows XP系统文件一一诠释(1)[最新整理](转BY wang6610----BBS.WUYOU.COM)
2012-01-17 04:49 520Windows XP系统文件一一诠 ... -
OpenGL函数参考(中文版)转载
2012-01-17 04:49 834OpenGL函数参考(中文版)转载 2011年01月17日 ... -
OpenGl函数解释(转载)
2012-01-17 04:49 306OpenGl函数解释(转载) 2011年03月11日 第 ... -
怎样用OpenGL在某一位置上写字符串?
2012-01-17 04:47 363怎样用OpenGL在某一位置上写字符串? 2011年11月2 ... -
VBS脚本编程教程一
2012-01-16 03:40 401VBS脚本编程教程一 2010年01月10日 大家好,在 ... -
把我最钟爱的脚本语言--vbs 的教程分享给大家--2
2012-01-16 03:40 412把我最钟爱的脚本语言- ... -
vbs脚本批量将ppt转换为word
2012-01-16 03:40 838vbs脚本批量将ppt转换为word 2009年11月25日 ... -
通过对一个病毒源码的分析,了解VBS脚本语言的应用
2012-01-16 03:40 644通过对一个病毒源码的 ... -
【黑客】利用VBS脚本让QQ永远在线,等级速升
2012-01-16 03:40 332【黑客】利用VBS脚本让QQ永远在线,等级速升 2010年0 ...
相关推荐
* 129 个命令行工具(称为“cmdlet”),用于执行常见系统治理任务,如治理服务、进程、事件日志、证书、注册表以及使用 Windows Management Instrumentation (WMI)。 * 采用标准命名约定和通用参数的命令行工具,...
WMI in Windows PowerShell 4.0
PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离.... 可以预期, 使用PowerShell管理Windows服务器指日可待.
在Windows 7中内置了PowerShell2.0, Windows 8中内置了PowerShell3.0。如果本机没有添加,可在网上下载安装包进行安装,或者下载WebPI,通过WebPI安装PowerShell。; 为防止恶意脚本的执行,PowerShell有一个执行策略...
WMI 是 Windows 操作系统管理数据和操作的基础设施,系统管理员可以使用 VB Script、PowerShell 及 Windows API(C++、C#等)管理本地或远程计算机。使用 WMI 框 架应用程序可以直接访问 EC RAM、 I/O 端口、Memory ...
PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步, 拉近了与Unix, Linux等操作系统的距离.... 可以预期, 使用PowerShell管理Windows服务器指日可待.
Power Shell and WMI.
windows powershell团队开发人员lee holmes在本书中提供了上百个测试过的脚本,让你可以使用这个新的工具。本书提供了150个解决方案,并结合一个简洁的基于windows powershell 脚本语言和环境的任务进行介绍。当你...
title: "PowerShell 通过 WMI 获取系统信息"本文告诉大家如何通过 WMI 使用 Win32_OperatingSystem 获取设备厂商通
本书全面地介绍了Windows Server 2008命令行、PowerShell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,...
《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...
WMI是一个强大的技术:只需要简单的指定一个WMI类名就能返回它类的所有实例: 代码如下: PS> Get-WmiObject -Class Win32_BIOS SMBIOSBIOSVersion : 76CN27WW Manufacturer : LENOVO Name : 76CN27WW Serial...
Windows PowerShell in Action was written by Bruce Payette, one of the founding members of the Windows PowerShell team, co-designer of the PowerShell language and the principal author of the PowerShell...
《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...
基于 Windows Server 2016 和 Windows 10 的 Powershell 与 WMI 集成课程,通过这一个课程的介绍,我们将了解到 WMI 架构和组件,了解 Powershell 调用 WMI 的命令和使用方法,掌握 Powershell 调用 WMI 获取系统的...
SessionGopher:SessionGopher是一个PowerShell工具,使用WMI提取保存的会话信息以供WinSCP,PuTTY,SuperPuTTY,FileZilla和Microsoft远程桌面等远程访问工具使用。 它可以远程或本地运行
WMI是Windows管理规范的缩写,其中包含很多系统的软硬件信息。而Windows用户信息也可以通过WMI对象来获取。PowerShell提供了对WMI的访问功能,十分方便且强大——这就是Get-WmiObject这个cmdlet。 获取所有的Windows...
How do you use Windows PowerShell to navigate the filesystem, manage files and folders, or retrieve a web page? This introduction to the PowerShell language and scripting environment provides more ...
《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...
《精通Windows Server 2008命令行与PowerShell》的内容简介回到顶部↑ 本书全面地介绍了windows server 2008命令行、powershell和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...