设为首页 收藏本站
查看: 1430|回复: 0

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

[复制链接]

尚未签到

发表于 2018-9-3 10:11:20 | 显示全部楼层 |阅读模式
  我记得在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″
  

DSC0000.png

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

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

DSC0001.png

  可以看到每个有的成员是属性(Property),而有的则是方法(Method)。
  那么,有两个问题:
  为什么要使用-namespace "root\cimv2"?
  cimv2是WMI的一个命名空间,每个命名空间下有不同的WMI对象成员。cimv2是其默认设置。可以按照以下步骤进行修改:
  控制面板 -> 管理工具 -> 计算机管理 -> 服务和应用程序 -> 右键"WMI控制" -> 属性 -> 高级
  参数"-namespace"并非必须,但是,使用它有两个好处,一是保证我们能准确的查看指定命名空间下的WMI对象,因为有时默认命名空间并非我们所希望查看的;二是如果不指定命名空间,被设置过的计算机可能拒绝我们的访问请求。
  注:因为我使用英文版系统,上述步骤中个别名称可能不准确。
DSC0002.png

  在如上图所示的界面,即可修改默认路径。
  另一个问题是,查看成员的类型有什么用?
  如果一个成员是方法,那么,我们可以调用它。如果一个成员是属性,我们则可以查看它的值。但是,需要注意的是,不同的属性成员有不同的数据结构,有的是"System.String",有的是"System.UInt32",有的则是"System.String[ ]",在使用时,应当注意数据格式,否则会报错的。
  如果我们需要管理网络中的计算机,则需要指定计算机名称:
  

  get-wmiObject -list -namespace “root\CIMV2″ -computername 计算机名
  

  好了,现在来具体操作,查看具体信息。
  例:
  查看BIOS信息
  

  get-wmiobject -class win32_bios -namespace "root\cimv2"
  

  运行结果:
DSC0003.png

  查看服务信息
  

  get-wmiobject -class win32_service -namespace "root\cimv2" | format-list *
  

  查看机器信息
  

  get-wmiobject -class win32_computersystem | format-list *
  

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


  • $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
  • }
  

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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-561916-1-1.html 上篇帖子: 【探索PowerShell 】【十二】筛选器 - Filters 下篇帖子: 【探索PowerShell 】【十四】使用WMI对象的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表