12.PowShell-对WMI对象的操作

  • PowerShell -- 对WMI对象的操作

     

  1. 什么是WMI 对象

它是作为一个基本的数据库存在于windows 系统中的。我们可以连接WMI服务请求查询其中所包含的信息。Root\cimv2是WMI的一个命名空间,每个命名空间下有不同的WMI对象成员。CIMV2是其默认设置;

WMI包括系统各方面的内容:

机器信息:制造商,型号,序列号等

BIOS信息;

OS 信息;

CPU信息: 种类,制造商,速度,版本

服务器内存总量

磁盘信息:容量、格式等

网络信息:MAC,IP等

其他信息

  1. 使用PowerShell查看 WMI 对象

    实例一:列出WMI对象

    Get-wmiobject –list –namespace “root\CIMV2”

    部分结果:

    PS C:\> Get-wmiobject -list -namespace "root\CIMV2"

       NameSpace: ROOT\CIMV2

    Name                               Methods              Properties

    ----                               -------              ----------

    __SystemClass                      {}                   {}

    __thisNAMESPACE                    {}                  {SECURITY_DESCRIPTOR}

    __Provider                         {}                   {Name}

    __Win32Provider                    {}                   {ClientLoadableCLSI...

    __ProviderRegistration             {}                   {provider}

    __EventProviderRegistration        {}                  {EventQueryList, pr...

    __ObjectProviderRegistration       {}                  {InteractionType, p...

    __ClassProviderRegistration        {}                  {CacheRefreshInterv...

    __InstanceProviderRegistration     {}                  {InteractionType, p...

    __MethodProviderRegistration       {}                   {provider}

    __PropertyProviderRegistration     {}                   {provider,Supports...

    __EventConsumerProviderRegistration {}                   {ConsumerClassNames...

    __NAMESPACE                        {}                   {Name}

    __IndicationRelated                {}                   {}

    __EventFilter                      {}                   {CreatorSID,EventA...

    __EventConsumer                    {}                   {CreatorSID,Machin...

    __FilterToConsumerBinding          {}                   {Consumer,CreatorS...

    __AggregateEvent                    {}                   {NumberOfEvents, Re...

    __TimerNextFiring                  {}                  {NextEvent64BitTime...

    __Event                            {}                  {SECURITY_DESCRIPTO...

    __ExtrinsicEvent                    {}                   {SECURITY_DESCRIPTO...

    Win32_DeviceChangeEvent            {}                   {EventType,SECURIT...

    实例二:查看具体某个类的成员,例如类(win32_process)

    Get-wmiobject –class win32_process –namespace “root\CIMV2” | get-member

    部分结果:

    PS C:\> Get-wmiobject -class win32_process -namespace"root\CIMV2" | get-member

       TypeName:System.Management.ManagementObject#root\CIMV2\Win32_Process

    Name                      MemberType     Definition

    ----                      ----------     ----------

    Handles                   AliasProperty  Handles =Handlecount

    ProcessName                AliasProperty  ProcessName = Name

    PSComputerName            AliasProperty  PSComputerName =__SERVER

    VM                        AliasProperty  VM = VirtualSize

    WS                        AliasProperty  WS = WorkingSetSize

    AttachDebugger             Method         System.Management.ManagementBaseOb...

    GetAvailableVirtualSize   Method        System.Management.ManagementBaseOb...

    GetOwner                  Method        System.Management.ManagementBaseOb...

    GetOwnerSid                Method         System.Management.ManagementBaseOb...

    SetPriority               Method        System.Management.ManagementBaseOb...

    Terminate                 Method        System.Management.ManagementBaseOb...

    Caption                   Property       string Caption{get;set;}

    CommandLine               Property       string CommandLine{get;set;}

    CreationClassName         Property       stringCreationClassName {get;set;}

    实例三:查看BIOS信息

    Get-wmiobject –class win32_bios –namespace “root\CIMV2”

    结果:

    PS C:\> Get-wmiobject -class win32_bios -namespace"root\CIMV2"

    SMBIOSBIOSVersion : A05

    Manufacturer      : Dell Inc.

    Name              : Default SystemBIOS

    SerialNumber      : GB1Q53X

    Version           : DELL   - 6222004

    实例四:查看服务信息

    Get-wmiobject –class win32_service  –namespace “root\CIMV2”  | format-list *

     

    部分结果:

    PS C:\> Get-wmiobject -class win32_service  -namespace "root\CIMV2"  | format-li

    st *

    PSComputerName          : COMPUTER1

    Name                    :AdobeARMservice

    Status                  : OK

    ExitCode                : 0

    DesktopInteract         : False

    ErrorControl            : Ignore

    PathName                :"C:\Program Files (x86)\Common

                             Files\Adobe\ARM\1.0\armsvc.exe"

    ServiceType             : OwnProcess

    StartMode               : Auto

    __GENUS                 : 2

    __CLASS                 :Win32_Service

    __SUPERCLASS            :Win32_BaseService

    __DYNASTY               : CIM_ManagedSystemElement

    __RELPATH               :Win32_Service.Name="AdobeARMservice"

    __PROPERTY_COUNT        : 25

    __DERIVATION            :{Win32_BaseService, CIM_Service, CIM_LogicalElement,

                             CIM_ManagedSystemElement}

    __SERVER                : COMPUTER1

    __NAMESPACE             :root\CIMV2

    __PATH                  : \\COMPUTER1\root\CIMV2:Win32_Service.Name="Adobe

                             ARMservice"

    AcceptPause             : False

    AcceptStop              : True

    Caption                 : AdobeAcrobat Update Service

    CheckPoint              : 0

    CreationClassName       :Win32_Service

    Description             : AdobeAcrobat Updater keeps your Adobe software up

                              to date.

    DisplayName             : AdobeAcrobat Update Service

    InstallDate             :

    ProcessId               : 1780

    ServiceSpecificExitCode : 0

    Started                 : True

    StartName               :LocalSystem

    State                   : Running

    SystemCreationClassName : Win32_ComputerSystem

    SystemName              : COMPUTER1

    TagId                   : 0

    WaitHint                : 0

    Scope                   :System.Management.ManagementScope

    Path                    : \\COMPUTER1\root\CIMV2:Win32_Service.Name="Adobe

                             ARMservice"

    实例五:查看机器信息

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

    部分结果:

    PS C:\> get-wmiobject -class win32_computersystem | format-list *

    PSComputerName              : COMPUTER1

    AdminPasswordStatus         : 0

    BootupState                 :Normal boot

    ChassisBootupState          : 3

    KeyboardPasswordStatus      : 0

    PowerOnPasswordStatus       : 0

    PowerSupplyState            : 3

    PowerState                  : 0

    FrontPanelResetStatus       : 0

    ThermalState                : 3

    Status                      : OK

    Name                        : COMPUTER1

    PowerManagementCapabilities :

    PowerManagementSupported    :

    __GENUS                     : 2

    __CLASS                     :Win32_ComputerSystem

    __SUPERCLASS                :CIM_UnitaryComputerSystem

    __DYNASTY                   :CIM_ManagedSystemElement

    __RELPATH                   :Win32_ComputerSystem.Name="COMPUTER1"

    __PROPERTY_COUNT            : 60

    __DERIVATION                :{CIM_UnitaryComputerSystem, CIM_ComputerSystem,

                                 CIM_System, CIM_LogicalElement...}

    __SERVER                    : COMPUTER1

    __NAMESPACE                 :root\cimv2

    __PATH                      : \\COMPUTER1\root\cimv2:Win32_ComputerSystem.

                                 Name="COMPUTER1"

    AutomaticManagedPagefile    : True

    AutomaticResetBootOption    : True

    AutomaticResetCapability    : True

    实例六:查询本地计算机的网络信息

    $name="."  

    $items = get-wmiObject -class win32_NetworkAdapterConfiguration  -namespace"root\CIMV2" -ComputerName $name | where{$_.IPEnabled -eq“True”} 

     foreach($objin $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=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 

    }

     

  2. PowerShell 使用其他WMI对象的方法

  1. 查询方法

    Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member -MemberTypeMethods | Format-List

    列出的可用的方法有:

    DisableIPSec

    EnableDHCP

    EnableIPSec

    EnableStatic

    ReleaseDHCPLease

    RenewDHCPLease

    SetDNSDomain

    SetDNSServerSearchOrder

    SetDynamicDNSRegistration

    SetGateways

    SetIPConnectionMetric

    SetIPXFrameTypeNetworkPairs

    SetTcpipNetbios

    SetWINSServer

    ConvertFromDateTime

    ConvertToDateTime

    Delete

    GetType

    Put

调用方法

实例一:我们可以使用如下命令来改变DHCP设置:

$Network=get-wmiobject win32_NetworkAdapterConfiguration | where{ 

$_.IPEnabled -eq "true"} 

foreach($NIC in $Network){ 

$NIC.EnableDHCP()}

实例一解释:这段脚本首先会判断"IPEnable"是否为真,如果是,则开启DHCP,否则不进行操作。

实例二:类"Win32_NetworkAdapterConfiguration"还具有另外的方法,如"$NIC.SetDNSServerSearchOrder()",可以使用这个方法改变DNS设置,改变是否自动获取DNS”的设置。

$Network=get-wmiobject win32_NetworkAdapterConfiguration |where{$_.IPEnabled -eq "true"} 

foreach($NIC in $Network){ 

$NIC.EnableDHCP() 

$NIC.SetDNSServerSearchOrder() 

}

  1. 查询属性

PSC:\> Get-WmiObject Win32_NetworkAdapterConfiguration | Get-Member –MemberType Property | Format-List

TypeName   :System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapter

             Configuration

Name       : ArpAlwaysSourceRoute

MemberType : Property

Definition : bool ArpAlwaysSourceRoute {get;set;}

TypeName   :System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapter

             Configuration

Name       : ArpUseEtherSNAP

MemberType : Property

Definition : bool ArpUseEtherSNAP {get;set;}

TypeName   :System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapter

             Configuration

Name       : Caption

MemberType : Property

Definition : string Caption {get;set;}

TypeName   :System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapter

             Configuration

Name       : DatabasePath

MemberType : Property

Definition : string DatabasePath {get;set;}

TypeName   :System.Management.ManagementObject#root\cimv2\Win32_NetworkAdapter

             Configuration

Name       : DeadGWDetectEnabled

MemberType : Property

Definition : bool DeadGWDetectEnabled {get;set;}

参考:http://marui.blog.51cto.com/1034148/296083 

更多相关文章
  • PowerShell2.0之使用WMI管理Windows(三)对WMI对象的语言支持
    管理大型的异构网络非常繁琐,而在本地计算机上用不同的自动化接口,如PowerShell.COM对象,甚至基于.NET的程序管理单独的程序和服务则容易得多.关键是存在于混合网络中的分布式系统,即如何操作防火墙后面的设备.如果它只是一种硬件设备,如路由器,则使用WMI(Windows Managemen ...
  • 关于WMI对象Get-WmiObject
    一什么是WMI对象Windows Management Instrumentation (WMI) 是 Windows 系统管理的核心技术,因为它可以按统一的方式公开各种类型的信息.我们在针对Powershell学习的过程中,经常会看到一些针对WMI调取的命令或脚本,但是依然不知道WMI到底可以执行 ...
  • 探索PowerShell十四使用WMI对象的方法
    上一篇文章中介绍了WMI的基础内容,主要讲了WMI的属性值的查看,文中还提到,WMI不仅具有属性,还具有方法.这一节就来具体讲一下如何调用WMI对象方法.通过查看WMI对象,可以发现有不少的类同时具有属性和方法.例如类"Win32_NetworkAdapterConfiguration&q ...
  • 探索PowerShell十三WMI对象
    我记得在xp时代,经常使用的工具有一个叫做WMI Administrative Tools,是微软官方提供的用来查看.编辑WMI对象的,只是现在好似不支持新的系统了.但是,在Win7.Server 2008下,这些功能都可以方便的通过PowerShell来完成.首先,先来认识一下什么是WMI对象:W ...
  •    前端时间写了篇怎么判断js对象相等的文章,一直在期待大神给点消息,无奈一直杳无音讯,还是自己写个函数来进行判断,下面总结一些常用的对象操作的方法.    咋们来个先抑后扬的方式,先放出几个基本的东西,埋点伏笔,一下子就把那方法亮出来,我这文章就没得写了.大神们就绕道走吧,哥这是入门级别的,自己 ...
  • 关于Objective-C对象release操作的一个小问题探讨
     最近遇到这样一个问题,以前的时候并未注意:新建一个工程,然后添加一个类,文件结构是这样的然后写了这样一小段程序,运行- (void)viewDidLoad   {       [super viewDidLoad];       Test *testObj = [[Test alloc] init ...
  • 1.Number Javascript只有一种数字类型,可以有小数也可以没有,也可以使用科学计数法. var z=123e-5; // 0.00123 JavaScript 不是类型语言.与许多其他编程语言不同,JavaScript 不定义不同类型的数字,比如整数.短.长.浮点等等. JavaScr ...
  • 首先,请允许我,先简单地把自己在项目中遇到的问题简要的描述一下.比如,有个班级页面更新页面,允许在页面中添加学生信息(暂且不考虑实际业务).问题产生了. 有如下问题:1.在更新页面,应该初始化已经保存的学生列表信息(PO)已持久化到数据库中2.可以对已保存的操作进行删除.修改操作(PO)3.可以添加 ...
一周排行
  • Android开发学习笔记:Spinner和AutoCompleteTextView浅析
     一.Spinner的简介与创建 1.Spinner的简介 Spinner(下拉列表)是一 ...
  • Oracle系列<五>:SQL综合练习[1]列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数select  job,count(*) from emp group by job having ...
  • WINDOWS8.1新功能工作文件夹实验手册一
     sunjian.com - 51CTO技术博客 - 领先的IT技术博客文件夹实验手册实验 ...
  • 7.应用层:为应用软件提供接口,使应用程序能够使用网络服务.  常见的应用层协议:http(80),ftp(20/21),smtp(25),pop3(110),telnet(23),dns(53)6.表示层:     ...
  • 手动在linux中源码编译安装httpd
    为什么有RPM包还需要自己手动编译安装程序包呢?因为笔者的水平有限,对此问题有两种自己的回 ...
  •                                                  浅谈CCNA的eigrp的配置eigrp是增强型内部网关路由协议,管理距离是90,管理距离用于选择路由协议,是混合型路 ...
  • 安装Samba■设置共享文件夹■添加Samba用户Windows与Windows系统之间可以很容易的共享文件.但要Windows与Linux共享文件则需要架设Samba服务器.Samba通过SMB协议,可以实现Win ...
  • NSOJ飞船汇合(经典)
    一支分散的飞船舰队,需要汇合到主舰,但是这种飞船在太空中飞行的耗油与质量没有关系,只与发动 ...
  • QT体系的文件编码
    要搞好Qt,就要搞定大量的计算机语言 C++ ,js ,glsl , css, sql,q ...
  • 小时候背的书包都是哪种军绿挎包.装不了太多东西,太沉的话带子还容易断.中学.至少是高中后就很少有人背了,记得高三时是拎一个类似现在笔记本包的公文包的.现在这种包却成了时尚饰物.这种包的缺点是老背一边容易把脊椎压弯,产 ...