探索PowerShell(十三) WMI对象介绍_PowerShell

我记得在xp时代,经常使用的工具有一个叫做WMI Administrative Tools,是微软官方提供的用来查看、编辑WMI对象的,只是现在好似不支持新的系统了。但是,在Win7、Server 2008下,这些功能都可以方便的通过PowerShell来完成。

首先,先来认识一下什么是WMI对象:

WMI是作为一个基本的数据库存在于Windows系统中的。我们可以连接到WMI服务请求查询其中所包含的信息。WMI包括了系统方方面面的信息,包括:
• 机器信息:制造商、型号、序列号等
• BIOS信息
• OS信息
• CPU信息:种类、制造商、速度、版本
• 服务器内存总量
• 磁盘信息:容量、格式等
• 网络信息:MAC、IP等
• 其他
可以看出WMI内容是多么的丰富,几乎包括了计算机的方方面面。

利用PowerShell查看WMI成员

在PowerShell中通过以下命令列出WMI对象:
get-wmiObject -list -namespace “root\CIMV2″ <enter>

需要具体查看某个类的成员,使用下面的命令(例如类"win32_process"):


get-wmiobject -class win32_process -namespace "root\cimv2" | get-member 

可以看到每个有的成员是属性(Property),而有的则是方法(Method)。

那么,有两个问题:

为什么要使用-namespace "root\cimv2"?

cimv2是WMI的一个命名空间,每个命名空间下有不同的WMI对象成员。cimv2是其默认设置。可以按照以下步骤进行修改:

控制面板 -> 管理工具 -> 计算机管理 -> 服务和应用程序 -> 右键"WMI控制" -> 属性 -> 高级

参数"-namespace"并非必须,但是,使用它有两个好处,一是保证我们能准确的查看指定命名空间下的WMI对象,因为有时默认命名空间并非我们所希望查看的;二是如果不指定命名空间,被设置过的计算机可能拒绝我们的访问请求。

注:因为我使用英文版系统,上述步骤中个别名称可能不准确。

在如上图所示的界面,即可修改默认路径。

另一个问题是,查看成员的类型有什么用?

如果一个成员是方法,那么,我们可以调用它。如果一个成员是属性,我们则可以查看它的值。但是,需要注意的是,不同的属性成员有不同的数据结构,有的是"System.String",有的是"System.UInt32",有的则是"System.String[ ]",在使用时,应当注意数据格式,否则会报错的。

如果我们需要管理网络中的计算机,则需要指定计算机名称:

get-wmiObject -list -namespace “root\CIMV2″ -computername 计算机名 <enter>
好了,现在来具体操作,查看具体信息。

例:

查看BIOS信息

get-wmiobject -class win32_bios -namespace "root\cimv2" <enter>
运行结果:

 

查看服务信息

get-wmiobject -class win32_service -namespace "root\cimv2" | format-list * <enter> 查看机器信息

get-wmiobject -class win32_computersystem | format-list * <enter> 

在网络管理环境中的多数情况下,我们可能要查看不同的计算机信息,因此,就需要使用计算机这一参数,例如:

查询本地计算机的网络信息

复制代码 代码如下:

$name="."

$items = get-wmiObject -class win32_NetworkAdapterConfiguration '
-namespace "root\CIMV2" -ComputerName $name | where{$_.IPEnabled -eq “True”} 
foreach($obj in $items) { 
Write-Host "DHCP Enabled:" $obj.DHCPEnabled 
Write-Host "IP Address:" $obj.IPAddress 
Write-Host "Subnet Mask:" $obj.IPSubnet 
Write-Host "Gateway:" $obj.DefaultIPGateway 
Write-Host "MAC Address:" $ojb.MACAddress 
}

如果查询对象是其他机器,只需给变量"$name"赋与其他值即可。

例如:

复制代码 代码如下:

$name=read-host "Enter Computer Name"
write-host "Computer:"$name
$items = get-wmiObject -class win32_NetworkAdapterConfiguration '
-namespace "root\CIMV2" -ComputerName $name | where{$_.IPEnabled -eq “True”} 

foreach($obj in $items) { 
Write-Host "DHCP Enabled:" $obj.DHCPEnabled 
Write-Host "IP Address:" $obj.IPAddress 
Write-Host "Subnet Mask:" $obj.IPSubnet 
Write-Host "Gateway:" $obj.DefaultIPGateway 
Write-Host "MAC Address:" $ojb.MACAddress 
}

配合更多的查询命令,便可以方便的写出一个查询计算机信息的脚本,在本教程的结束部分,我会尽可能多的提供各种常用脚本。本节内容就先写到这里。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索powershell
WMI对象
powershell wmi、powershell wmi pdf、powershell 对象、powershell 创建对象、powershell xml对象,以便于您获取更多的相关知识。

时间: 2024-10-29 13:38:27

探索PowerShell(十三) WMI对象介绍_PowerShell的相关文章

探索PowerShell(十) 循环语句介绍_PowerShell

PowerShell作为可编程性语言,拥有以下循环语句. 注:本节所要讨论的内容的实质更多的偏向于程序设计方面,所以在此不做过多详细讲解,只针对PowerShell中的应用进行具体讲解. • for (初值;表达式;赋值语句) {代码} 用变量值控制执行次数 • foreach (成员变量 in 数组) {代码} 利用迭代执行代码 • foreach-object 对一组输入的每个对象执行运算 • while(表达式) {代码} 表达式为真时循环执行代码 • do {代码} while(表达式)

探索PowerShell(六) 脚本基础简要_PowerShell

PowerShell脚本基础知识概览: 常量.变量.数组.哈希 条件.逻辑 循环控制 模块化 WMI对象(各种设备) ADSI对象(活动目录) 常量.变量.数组.哈希 各种字符串操作 使用常量和变量 各种运算符和表达式 创建.修改.合并数组或哈希表 条件.逻辑 判断各种条件 "if"."switch"语句 使用运算符进行判断 循环控制 "while"."do while"."do until"."

【探索PowerShell 】【十三】WMI对象

我记得在xp时代,经常使用的工具有一个叫做WMI Administrative Tools,是微软官方提供的用来查看.编辑WMI对象的,只是现在好似不支持新的系统了.但是,在Win7.Server 2008下,这些功能都可以方便的通过PowerShell来完成. 首先,先来认识一下什么是WMI对象: WMI是作为一个基本的数据库存在于Windows系统中的.我们可以连接到WMI服务请求查询其中所包含的信息.WMI包括了系统方方面面的信息,包括: • 机器信息:制造商.型号.序列号等 • BIOS

探索PowerShell(十四) 使用WMI对象的方法_PowerShell

上一篇文章中介绍了WMI的基础内容,主要讲了WMI的属性值的查看,文中还提到,WMI不仅具有属性,还具有方法.这一节就来具体讲一下如何调用WMI对象方法. 通过查看WMI对象,可以发现有不少的类同时具有属性和方法.例如类"Win32_NetworkAdapterConfiguration",j就具有不少的方法和属性,可以使用以下命令查询: Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType M

探索PowerShell (四) PowerShell的对象、格式与参数_PowerShell

今天贴博文晚了,感谢各位能继续关注! 本节将要给大家介绍一下PowerShell下的对象,基本格式以及参数.依然属于PowerShell的基础. PowerShell中的对象 在本教程开篇我们说过,PowerShell是基于面向对象化的,不像传统的shell那样基于文本.这其中最主要的原因就是因为Win平台在管理操作上主要以面向对象为主,因此为了符合系统特点和我们的操作习惯,PowerShell也继承了这一特色.因此,不像传统的shell,在PowerShell中,我们可以随意地与对象进行互动,

【探索PowerShell 】【十四】使用WMI对象的方法

上一篇文章中介绍了WMI的基础内容,主要讲了WMI的属性值的查看,文中还提到,WMI不仅具有属性,还具有方法.这一节就来具体讲一下如何调用WMI对象方法. 通过查看WMI对象,可以发现有不少的类同时具有属性和方法.例如类"Win32_NetworkAdapterConfiguration",j就具有不少的方法和属性,可以使用以下命令查询: Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberType M

PowerShell中Get-Date对象的常用属性和方法介绍_PowerShell

本文介绍PowerShell中使用Get-Date得到的日期对象的属性和方法,利用好这些对象和方法,可以极大的增强我们开发的灵活性. 使用Get-Date可以获取到一个时间对象,这个时间对象,可不是仅仅用来输出当前时间这么简单.我们来看看它的属性和方法吧,不看白不看. 要想看一个对象的成员(即对象的属性和方法),可以使用管道符,再加上Get-Member这个cmdlet.很方便滴! 复制代码 代码如下: PS C:\Users\zhanghong> Get-Date | Get-Member T

PowerShell中文件对象的属性方法总结_PowerShell

本文介绍一个PowerShell中文件对象有哪些属性,知道了这些属性对于我们更好的对文件进行操作是非常重要的. PowerShell是一个面向对象的脚本语言,在PowerShell中,所有的都是对象,文件也是对象.既然是对象,那肯定有属性.PowerShell中的文件对象,其实就是.NET中的System.IO.FileInfo类的实例.我们要查看完整的PowerShell文件对象的属性,其实不需要去翻MSDN,然后把System.IO.FileInfo类的属性找出来,那样太麻烦了,而且貌似在P

【探索PowerShell 】【四】PowerShell的对象、格式与参数

PowerShell中的对象 在本教程开篇我们说过,PowerShell是基于面向对象化的,不像传统的shell那样基于文 本.这其中最主要的原因就是因为Win平台在管理操作上主要以面向对象为主,因此为了符合 系统特点和我们的操作习惯,PowerShell也继承了这一特色.因此,不像传统的shell,在 PowerShell中,我们可以随意地与对象进行互动, 先来认识一下,什么是对象--object 不知各位有没有从事开发的经验.实际上,面向对象这一概念的提出就是为了更好用程序 语言解决现实问题