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.可以添加 ...
一周排行
  •     string类是c++默认提供的,但是了解string类的写法也是非常重要的,面试中有许多关于string类的题目,string类能够考察c++类和对象的掌握程度,一定程度上也考察了面试者的编程能力.    ...
  • 本文探讨Java运行时(动态)绑定机制.author: ZJ Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]运行时绑定也叫动态绑定,它是一种调用 ...
  • 祝贺安防监控系统荣获国家计算机软件著作权登记
    安防监控系统荣获国家计算机软件著作权登记 来源:华清远见研发中心 2016年1月7日,由华 ...
  •  如果一个网站的内容不是很多而且将来内容也不怎么增加的话,那么制作成单页(Single Page Websites)的形式是很好的选择.这种只有一个页面的网站形式,曾经非常流行,现在依然有很多人喜欢.如果你也想做一个 ...
  • 在C#中,对实例主要有三种访问方式:属性.方法.事件.我们定义对象也主要是定义这三大成员.那如何来定义呢?如何寻找出对象的属性.方法和事件呢?在中文世界中完成这样的任务非常的简单.任何一个名词都是对象.比如:刀.该名 ...
  • 复习)指针的功能:存放变量的地址 : 间接操作变量  : 可以任意指向.一.函数可以把相对独立的某个功能抽象出来,使之成为程序中的一个独立实体.可以在同一个程序或其他程序中多次重复使用.核心重点就是重复使用代码.意义 ...
  • 之前看到微软的surface官方页面(http://www.microsoft.com/surface/zh-cn),这种展现形式能够在移动端上达到同样的展示效果.特意研究了一下他的写法,首先在head标签里有< ...
  • Windows10技术预览版
    微软于2014年10月1日公布了 Windows 10 技术预览版.正式版本预计将在201 ...
  • 程序à        外部_声明       | 程序外部_声明 外部_声明 à       功能_定义       | 声明 功能_定义 à 类型_说明声明符 复合_声明 类型_说明à       VOID     ...
  • Percona5.6增加了对NUMA架构的支持
    目前主流服务器都支持NUMA架构,我们可以通过命令numactl --hardware查看 ...