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.可以添加 ...
一周排行
  • 一. 网络测试工具iperf 1.安装包 apt-get -y install iperf 2.参数说明 -s, --server    run in server mode(以server模式启动) -c, --c ...
  • 原地址:http://blog.chinaunix.net/space.php?uid=25075782&do=blog&id=2220254mysqld 常规MySQL服务器mysqld-opt 优 ...
  •         如何提高海量数据的检索速度??适当的建立索引是解决问题的首要前提.        索引:是除了表之外另一个重要的.用户定义的存储在物理介质上的数据结构.当根据索引码的值搜索数据时,索引提供了对数据的快 ...
  • PSP个人项目耗时对比记录表:四则运算 Personal Software Process Stages Time(%) Planning 7  Estimate 9 开发 76    •需求分析  6    •生成 ...
  • 小猫钓鱼  .蝌蚪找妈妈.骆驼和羊 见到这些图片 感到那么的亲切  觉得自己好像又回到了那个灿烂的年龄 我是个怀旧的人 给我美好记忆的永远无法忘记 发出来和我有同感的朋友共享.                    
  •  1.打开多个窗口打开多个窗口的命令以下几个:横向切割窗口:new+窗口名(保存后就是文件名) :split+窗口名,也可以简写为:sp+窗口名纵向切割窗口名:vsplit+窗口名,也可以简写为:vsp+窗口名   ...
  • http://www.net130.com1.最基本,最常用的,测试物理网络的 ping 192.168.0.8 -t ,参数-t是等待用户去中断测试 2.查看DNS.IP.Mac等 A.Win98:winipcfg ...
  • 大数据不一定是复杂的分析许多人一提到大数据,首先想到的是复杂的数据分析.这让有些希望采用大数据分析工具的用户产生了畏难情绪,也让有些用户产生了误解,认为大数据分析只是那些拥有复杂业务流程和海量数据的大企业的事.市场研 ...
  • Nagios安装配置教程一基本了解
    Nagios安装配置教程(一)基本了解  一.Nagios简介    Nagios是一款开 ...
  • 由于linux默认编码格式为en_US.UTF-8(可进入/etc/sysconfig/i18n查看),所以在CRT端也要设置成UTF-8字符编码格式才不会显示乱码问题,由于CRT全局模式下都是默认字符编码格式,所以 ...