主题
    about_WMI_cmdlets
    
简短说明
    提供有关 Windows Management Instrumentation (WMI) 和 Windows
    PowerShell 的背景信息。
           
详细说明
    本主题提供有关以下内容的信息:WMI 技术、用于 Windows PowerShell 的
    WMI cmdlet、基于 WMI 的远程处理、WMI 加速器和 WMI 故障诊断。本主题
    还提供了有关 WMI 的详细信息的链接。

                 
  关于 WMI

      Windows Management Instrumentation (WMI) 是 Microsoft 对“基于 Web
      的企业管理”(WBEM) 的实现,WBEM 是一项业界倡议,用于为访问企业环境中的管
      理信息开发一项标准技术。WMI 使用通用信息模型 (CIM) 行业标准来表示系统、
      应用程序、网络、设备和其他托管组件。CIM 由分布式管理任务组 (DMTF) 进行开
      发和维护。可以使用 WMI 来管理本地和远程计算机。例如,可以使用 WMI 执行以
      下任务:

          -- 在远程计算机上启动进程。

          -- 远程重新启动计算机。

          -- 获取在本地或远程计算机上安装的应用程序的列表。

          -- 查询本地或远程计算机上的 Windows 事件日志。

 
  适用于 Windows PowerShell 的 WMI Cmdlet

      Windows PowerShell 通过一组在 Windows PowerShell 中默认可用的 cmdlet
      实现 WMI 功能。可以使用这些 cmdlet 来完成管理本地和远程计算机所必需的
      端到端任务。
 
      其中包括以下 WMI cmdlet。

      Cmdlet                 说明
      ------------------     ----------------------------------------------
      
      Get-WmiObject          获取 WMI 类的实例或有关这些可用类的信息。

      Invoke-WmiMethod       调用 WMI 方法。

      Register-WmiEvent      订阅 WMI 事件。

      Remove-WmiObject       删除 WMI 类和实例。

      Set-WmiInstance        创建或修改 WMI 类的实例。

    
  示例命令

      下面的命令显示本地计算机的 BIOS 信息。
         
          C:\PS> get-wmiobject win32_bios | format-list *

        
      下面的命令显示有关三台远程计算机的 WinRM 服务的信息。
        
          C:\PS> get-wmiobject -query "select * from win32_service where name='WinRM'" -computername server01, server01, server03
                 

      下面的命令更加复杂,它将退出某个程序的所有实例。
         
          C:\PS> notepad.exe
          C:\PS> $np = get-wmiobject -query "select * from win32_process where name='notepad.exe'" 
          C:\PS> $np | remove-wmiobject

  基于 WMI 的远程处理

      虽然通过 WMI 管理本地系统的功能非常有用,但是真正使 WMI 成为强大管理
      工具的功能却是远程处理功能。WMI 使用 Microsoft 的分布式组件对象
      模型 (DCOM) 来连接并管理系统。某些系统可能必须经过配置才允许 DCOM 连接。
      防火墙设置和锁定的 DCOM 权限可能阻止 WMI 远程管理系统的能力。
   

  WMI 类型加速器

      Windows PowerShell 包含 WMI 类型加速器。这些 WMI 类型
      加速器(快捷方式)与非类型加速器方式相比,可更直接地
      访问 WMI 对象。

      对于 WMI,支持下面的类型加速器:

          [WMISEARCHER] - 搜索 WMI 对象的快捷方式。

          [WMICLASS] - 访问类的静态属性和方法的快捷方式。

          [WMI] - 获取类的单个实例的快捷方式。

      [WMISEARCHER] 是 ManagementObjectSearcher 的类型加速器。
      它可接受一个字符串构造函数来创建搜索器,然后可以基于该搜索器执行 GET()。

      例如:
    
      PS> $s = [WmiSearcher]'Select * from Win32_Process where Handlecount > 1000'
      PS> $s.Get() |sort handlecount |ft handlecount,__path,name -auto

      handlecount  __PATH                                              name
      -----------  ------                                              ----
      1105         \\SERVER01\root\cimv2:Win32_Process.Handle="3724"   powershell...
      1132         \\SERVER01\root\cimv2:Win32_Process.Handle="1388"   winlogon.exe
      1495         \\SERVER01\root\cimv2:Win32_Process.Handle="2852"   iexplore.exe
      1699         \\SERVER01\root\cimv2:Win32_Process.Handle="1204"   OUTLOOK.EXE
      1719         \\SERVER01\root\cimv2:Win32_Process.Handle="1912"   iexplore.exe
      2579         \\SERVER01\root\cimv2:Win32_Process.Handle="1768"   svchost.exe
                    

      [WMICLASS] 是 ManagementClass 的类型加速器。它有一个
      字符串构造函数,该构造函数接受 WMI 类的本地或绝对 WMI 路径,
      并返回绑定到该类的对象。

      例如:

      PS> $c = [WMICLASS]"root\cimv2:WIn32_Process"
      PS> $c |fl *
      Name             : Win32_Process
      __GENUS          : 1
      __CLASS          : Win32_Process
      __SUPERCLASS     : CIM_Process
      __DYNASTY        : CIM_ManagedSystemElement
      __RELPATH        : Win32_Process
      __PROPERTY_COUNT : 45
      __DERIVATION     : {CIM_Process, CIM_LogicalElement, CIM_ManagedSystemElement}
      __SERVER         : SERVER01
      __NAMESPACE      : ROOT\cimv2
      __PATH           : \\SERVER01\ROOT\cimv2:Win32_Process

      [WMI] 是 ManagementObject 的类型加速器。它有一个字符串构造函数, 
      该构造函数接受 WMI 实例的本地或绝对 WMI 路径,并返回绑定到该
      实例的对象。

      例如:

      PS> $p = [WMI]'\\SERVER01\root\cimv2:Win32_Process.Handle="1204"'
      PS> $p.Name
      OUTLOOK.EXE
 

  WMI 故障诊断

      下面的问题是在您尝试连接到远程计算机时可能出现的最常见问题。

    问题 1:远程计算机未联机。

      如果计算机脱机,您将无法使用 WMI 连接该计算机。您可能收到以下
      错误消息:

          "远程服务器计算机不存在或不可用"

      如果收到此错误消息,请验证该计算机是否联机。
      尝试对远程计算机执行 ping 操作。
 
 
    问题 2:您没有远程计算机上的本地管理员权限。
 
      为了远程使用 WMI,您必须有远程计算机上的本地管理员权限。如果没有,
      则将拒绝访问该计算机。

      验证命名空间安全性:

          a. 单击"开始",右键单击"我的电脑",然后单击"管理"。

          b. 在"计算机管理"中,展开"服务和应用程序",右键单击"WMI 控件",
             然后单击"属性"。

          c. 在"WMI 控件属性"对话框中,单击"安全"选项卡。
     
 
    问题 3:防火墙阻止访问远程计算机。

      WMI 使用 DCOM(分布式 COM)和 RPC(远程过程调用)协议来遍历网络。
      默认情况下,很多防火墙会阻止 DCOM 和 RPC 通信。
      如果防火墙阻止这些协议,那么连接将失败。例如,Microsoft Windows
      XP Service Pack 2 中的 Windows 防火墙配置为自动阻止所有未经请求的
      网络通信,包括 DCOM 和 WMI。在其默认配置中,Windows 防火墙拒绝
      传入的 WMI 请求,并且您将收到以下错误消息:

          “远程服务器计算机不存在或不可用”
       

  有关 WMI 的详细信息

      有关 WMI 的详细信息,请参阅 MSDN (Microsoft Developer Network)
      Library 中的下列主题:

          "关于 WMI:"
          https://go.microsoft.com/fwlink/?LinkId=142212

          "WMI 故障诊断"
          https://go.microsoft.com/fwlink/?LinkId=142213

      此外,请参阅 Microsoft TechNet 脚本中心的"Windows Management
      Instrumentation的秘密 - 疑难解答和提示":

          https://go.microsoft.com/fwlink/?LinkId=142214
 

另请参阅
    联机版本:https://go.microsoft.com/fwlink/?LinkId=142219
    Get-WmiObject
    Invoke-WmiMethod
    Register-WmiEvent
    Remove-WmiObject
    Set-WmiInstance

 




目录