- 浏览: 12936 次
最新评论
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/
发表评论
-
批量修改多个文件内容的脚本
2012-01-20 01:33 784批量修改多个文件内容的脚本 2010年07月30日 如果 ... -
IIS 服务器没有及时响应启动或控制请求 未启动 启动 world wide web publishing服务 127 找不到指定程序
2012-01-20 01:33 1087IIS 服务器没有及时响应启动或控制请求 未启动 启动 wor ... -
vbs脚本:DeleteFolder
2012-01-20 01:33 751vbs脚本:DeleteFolder 2010年08月08日 ... -
QTP使用技巧(1)
2012-01-20 01:33 563QTP使用技巧(1) 2011年06 ... -
屎上最难!最搞笑的脑筋急转弯!不看答案你能猜对几个?
2012-01-19 09:23 592屎上最难!最搞笑的脑筋急转弯!不看答案你能猜对几个? 201 ... -
[转] Win7 配置Android开发环境
2012-01-17 01:58 613[转] Win7 配置Android开发环境 2011年08 ... -
解决Ubuntu中使用windows文件名乱码问题
2012-01-17 01:58 1225解决Ubuntu中使用windows文 ... -
Eclipse ---RCP总结
2012-01-17 01:58 810Eclipse ---RCP总结 2010年10月24日 ... -
【转】有关句柄和指针的常用函数
2012-01-17 01:58 1054【转】有关句柄和指针的常用函数 2010年11月11日 ... -
文本朗读器的设计与制作
2012-01-17 01:58 931文本朗读器的设计与制作 2010年07月29日 文本朗读 ... -
linux C库函数(二)
2012-01-15 21:14 733linux C库函数(二) 2010年01月26日 li ... -
linux C库函数(三)
2012-01-15 21:14 576linux C库函数(三) 2010年0 ... -
meego开发的学习路线
2012-01-15 21:14 466meego开发的学习路线 2011年06月26日 不同版 ... -
memmem 函数
2012-01-15 21:14 1287memmem 函数 2011年06月02日 软件研发的面 ... -
文件读写函数的使用方法
2012-01-15 21:14 611文件读写函数的使用方法 2010年04月11日 原文地址 ...
相关推荐
* 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和脚本的使用,包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理...