Windows Management Instrumentation 命令行(MSDN)(WMIC)
运行 Windows Management Instrumentation 命令行
在首次运行 Windows Management Instrumentation 命令行 (WMIC) 时,它将编译别名定义或托管对象格式 (MOF) 文件。每当 MOF 文件发生更改时,WMIC 都会重新编译这些文件并更新储备库。
可选择以交互模式或非交互模式使用 WMIC。下面为您提供了一些有关两种模式的特性和功能的信息:
交互模式
交互模式下的 WMIC 在执行一个命令之后返回 WMIC 命令提示符。Root\cli 是默认 WMIC 角色,当您以交互模式启动时,即处于该状态下。Exit 或 Quit 命令用于退出 WMIC。
交互模式对于要输入一系列 WMIC 命令的情况非常有用。
要在交互模式下启动 WMIC,请参阅在交互模式下运行 WMIC。
下面的示例提供了在使用 WMIC 交互模式的情况下可以在 WMIC 提示符处输入的别名、命令和全局开关:
- CONTEXT - 列出所有环境变量(全局开关)。
- OS - 以默认表格格式显示有关操作系统的数据。
- OS list full - 以 LIST 格式显示 OS 别名数据。
- /? - 列出可用的环境变量和别名的描述。
- OS /? - 列出操作系统可用的选项。
- OS list /? - 指定“list”操作的格式。
- OS list full /? - 列出可用的开关。
- OS list full /format /? - 为可用的格式列出关键字。
- OS call /? - 列出可用的方法(动词)。
- OS get /? - 列出可用的属性。
非交互模式
非交互模式下的 WMIC 在执行您输入的命令之后退出 WMIC。在命令完成之后返回到 WMIC 命令提示符。WMIC 别名、全局开关或命令也可以在非交互模式下使用。
如果要为一个批处理过程使用 WMIC,或者如果您只需执行一条 WMIC 命令,则非交互模式很有用。
要在非交互模式下启动 WMIC,请参阅在非交互模式下运行 WMIC。
下面的示例显示了如何在非交互模式下运行命令:
- <PROMPT>
wmic os get /format:hform>MyOS.htm
输出被定向到 html 文件,并返回到起始命令提示符处。 - <PROMPT>
wmic /?
列出帮助文件,并返回到起始命令提示符处。
使用 WMIC 帮助
WMIC 在命令行上包括联机帮助。在任何级别都可键入 /? 以获取更多的详细信息。通过 /?,您将得到当前角色中可用的全局开关和别名。当 /? 用在别名之后时,您可以得到该别名可用的谓词和开关;当 /? 用在谓词之后时,可以提供该谓词的详细信息。
例如:
有关别名和语法列表,请在命令提示符下键入 wmic
以启动 WMIC 外壳,然后键入:
/?
要显示 Process 别名可用的选项,请在 WMIC 外壳中键入:
process /?
/?:FULL 将给出所有可用的详细信息。这对于 GET 和 CALL 谓词特别有用。
注意
- 还可以使用连字符 (-?) 代替正斜杠 (/?)。
- 对于 PATH 和 CLASS 命令,循序渐进帮助只对于单一 NODE 可用(在本地和远程计算机上)。
WMIC 别名
别名是运行 WMIC 时帮助您访问 WMI 基础结构的一种辅助手段。别名是友好名称,用来捕获与一些特定的任务(如磁盘或网络管理)相关联的 WMI 类别的特征。
别名可用来提供:
- WMI 类别、属性和方法更清楚的名称。
- 安排好的属性的有用输出格式。
输出格式可以包括特定的属性值,或者以对某个具体表示法策略或功能适当的方式进行格式化。例如,别名可能具有“BRIEF”格式,此格式仅列出可通过别名来标识对象可视化的基本属性值。管理数据是以 XML 格式进行检索的,并通过内置或自定义的 XSL 输出格式进行处理。详细信息,请参阅在 WMIC 中创建和编辑格式。
WMIC 为管理信息的常用类别提供别名。您可以为其他类别添加别名。因此,WMIC 中的别名可以是以下类型:
- root\cli 名称空间中的默认别名。
- 对于 WMIC 包括的别名列表,请在 WMIC 命令提示符下输入
/?
。 - 有关具体别名的详细信息,请输入:
alias_name /?
- 有关别名架构的详细信息,请键入:
Alias alias_name list brief
- 对于 WMIC 包括的别名列表,请在 WMIC 命令提示符下输入
- 在 root\cli 名称空间中添加的别名。
- 在其他名称空间中定义的别名。如果在其他名称空间中定义别名,必须使用 /ROLE 开关来指定与 WMIC 一起使用的名称空间。详细信息,请参阅创建和编辑别名。
WMIC 动词
大多数别名支持下列动词。别名还可能支持其他动词。要在 WMIC 中使用动词,请输入别名,后面跟动词。有关“<alias> /?”的详细信息,请参阅帮助中的“别名”。如果别名不支持动词,您将收到“提供程序无法进行尝试的操作”的消息。
动词 | 操作 | 参数或动词特定的开关 | 示例 |
---|---|---|---|
ASSOC |
返回查询的结果: |
也可以是输出文件格式,如 LIST、MOF 或其他。 |
OS ASSOC |
CALL |
执行方法。 |
适当的方法和参数列表。参数列表以逗号定界。使用“SERVICE CALL /?”获得当前别名的可用方法和参数的列表。 |
SERVICE WHERE CAPTION='TELNET' CALL STARTSERVICE |
CREATE |
创建一个新实例并为该新实例设置属性值。不能用于创建新的类。 |
属性赋值,以逗号定界。使用“CREATE /?”获得别名的属性名称列表。 |
ENVIRONMENT CREATE Name="WMIC_test",VariableValue="WMIC_test_value",UserName="SYSTEM" |
Delete |
删除当前实例或实例集。不能用于删除类。 |
/INTERACTIVE(提示确认)或 /NOINTERACTIVE(不提示确认)。 |
PROCESS WHERE NAME="CALC.EXE" DELETE |
GET |
获取特定的属性。 |
属性名或开关。请查看下面 /GET 的开关表。还可以使用“GET /?”获得别名的属性名称和开关列表。 |
PROCESS GET NAME |
LIST |
显示数据。LIST 是默认的动词。 |
请查看下面 LIST 的副词和开关表。 |
PROCESS LIST BRIEF |
SET |
属性集操作。 |
属性赋值,以逗号定界。使用“SET /?”获得别名的属性名称列表。 |
ENVIRONMENT WHERE Name="WMIC_test" SET VariableValue="WMIC_test_value1" |
“List”动词具有下列副词。要在 WMIC 中使用副词,请输入别名,后面跟动词和副词。有关“<alias> /?”的详细信息,请参阅帮助中的“别名”。
副词 | 结果 |
---|---|
BRIEF |
属性的核心集。 |
FULL |
完整的属性集。这是 LIST 属性的默认集。 |
INSTANCE |
仅限实例路径。 |
STATUS |
对象的状态和相关属性。 |
SYSTEM |
系统属性。 |
别名专用或用户格式 |
通过提供不同的属性列表,以及显示属性时将使用的格式,可以定义别名特定的或用户定义的格式。 |
WRITEABLE |
对象的可写入属性。 |
“List”动词有下列开关。要在 WMIC 中使用动词特定的开关,请输入别名,后面跟一个开关(也可以使用动词和副词)。有关“<alias> /?”的详细信息,请参阅帮助中的“别名”。
开关 | 作用 |
---|---|
/TRANSLATE:<translation table> |
使用由该命令给出转换表转换输出。BasicXml 和 NoComma 是用 WMIC 包含的转换表。 |
/EVERY:<interval> |
每隔 X 秒就重复该命令,X 是时间间隔。 |
/FORMAT:<format specifier> |
指定关键字或 XSL 文件名对数据进行格式化,请参阅下面注释中的说明。 |
“Get”动词具有下列开关。
开关 | 作用 |
---|---|
/VALUE |
使用一个单独行上列出的每个值和该属性的名称对输出进行格式化。 |
/ALL |
输出作为表进行格式化。默认输出格式是 /ALL。 |
/TRANSLATE:<translation table> |
使用由该命令给出转换表转换输出。BasicXml 和 NoComma 是用 WMIC 包含的转换表。 |
/EVERY:<interval> |
每隔 X 秒就返回一次值,X 是时间间隔。 |
/FORMAT:<format specifier> |
指定关键字或 XSL 文件名对数据进行格式化,请参阅下面注释中的说明。 |
“Assoc”动词具有下列开关。
开关 | 作用 |
---|---|
/RESULTCLASS:<classname> |
与源对象相关联的返回终结点必须属于指定的类别或从此派生。 |
/RESULTROLE:<rolename> |
返回的终结点必须在与源对象的关联中扮演一个特殊的角色。 |
/ASSOCCLASS:<assocclass> |
返回的终结点必须通过指定的类别或其派生的类别与源相关联。 |
注意
- 对于“LIST”和“GET”动词,可使用格式说明符来指定 XSL 文件的名称或标准格式“TABLE”或“LIST”。“/FORMAT:TABLE”等同于“/ALL”(默认的输出格式)。
- 可以将 MOF 格式化输出捕获到文件(使用“/RECORD”开关),而且可以在其他计算机上使用 Mofcomp.exe 编译该文件,并将其导入到其他系统上的 WMI。然而,要确保可以为其他计算机相应地编辑计算机特定的属性。
- /FORMAT 和 /TRANSLATE 开关的顺序很重要。如果 /TRANSLATE 跟在 /FORMAT 后面,则对输出进行格式处理,然后进行转换。如果 /FORMAT 跟在 /TRANSLATE 后面,则对输出进行转换,然后再进行格式处理。
示例
下列示例阐述了动词及其副词和开关的有效使用方法。
- PROCESS GET NAME /FORMAT:XML.XSL /TRANSLATE:BASICXML
进程名以 XML 格式进行输出。如果不使用“/TRANSLATE”开关,则这些值周围的字符将显示为其 HTML 等效字符。 - PROCESS WHERE Handle="0" ASSOC
返回与特定的对象关联的实例(不同于与别名关联的类)。
WMIC 开关
全局开关用于设置 WMIC 环境的默认值。可通过输入 CONTEXT 命令查看由全局开关设置的当前条件值。
开关 | 条件 | 可能值 | 默认值 |
---|---|---|---|
/NAMESPACE |
别名通常使用的命名空间。 |
任意命名空间 |
root\cimv2 |
/ROLE |
WMIC 通常在其中查找别名和其他 WMIC 信息的命名空间。当此角色更改时,WMIC 交互式命令提示符将随之更改,以与角色匹配。默认情况下,WMIC 只有一个角色 (\\root\cli),因此只有在您具有定义了其他角色的管理产品,或者只有已在您单位中创建了其他角色的情况下,您才有开关角色。 |
包含别名的任何命名空间。 |
root\cli |
/NODE |
计算机名称,以逗号分隔。将针对在此值中列出的所有计算机同步执行所有命令。文件名必须以“@”作前缀。必须使用逗号将文件内的计算机名隔开,或者将计算机名置于不同的行,也可以同时采用这两种方式。 |
任何计算机名,一个包含计算机名的列表,或者内含计算机名的文件。 |
本地计算机名称 |
/IMPLEVEL |
模拟级别 |
匿名、标识、模拟、委派 |
模拟 |
/AUTHLEVEL |
身份验证等级 |
默认、无、连接、呼叫、Pkt、Pktintegrity、Pktprivacy |
Pktprivacy |
/LOCALE |
区域设置 |
MS_409(英语),MS_411(日语),MS_40B(芬兰语)等等。 |
安装 WMIC 时计算机用于显示的默认的文字。 |
/PRIVILEGES |
启用所有特权。 |
ENABLE 或 DISABLE |
启用 |
/TRACE |
将显示用于执行 WMIC 命令的所有功能的成功或失败信息。 |
ON 或 OFF |
关闭 |
/RECORD |
将所有输出信息写入 XML 文件。输出信息还将在命令提示符处显示。 |
文件名 |
未设置,无默认文件名。 |
/INTERACTIVE |
删除命令时,系统通常要求用户进行确认。 |
ON 或 OFF |
OFF 表示使用 NON-INTERACTIVE 模式,而 ON 表示使用 INTERACTIVE 模式。 |
/FAILFAST |
在尝试对 /NODE 计算机执行 WMIC 命令之前,是否对这些计算机进行检查。当 FAILFAST 为 ON 时,WMIC 在向 /NODE 开关中的计算机发送 WMIC 命令之前,会对它们执行 Ping 命令。如果这些计算机未响应 Ping 命令,则不对它们执行 WMIC 命令。 |
ON 或 OFF |
OFF |
/USER |
访问 /NODE 计算机或者访问用别名指定的计算机时 WMIC 使用的用户名。系统将提示您输入密码。用户名不能用于本地计算机。 |
任意用户名。 |
未设置 |
/PASSWORD |
访问 /NODE 计算机时 WMIC 使用的密码(可能包括本地计算机)。该密码在命令行中可见。 |
任意密码 |
未设置 |
/OUTPUT |
指定输出重定向的模式。所有的输出将只被定向到给定的目标。输出不会显示在命令行中。在输出开始之前,将清除目标。 |
STDOUT、CLIPBOAR 或文件名。STDOUT 代表命令行。Clipboard 代表 Windows 剪贴板。然后可将输出信息粘贴到任何能以已生成格式接收数据的程序中。详细信息,请参阅下面的注释。 |
STDOUT |
/APPEND |
指定输出重定向的模式。所有的输出将只被定向到给定的目标。输出不会显示在命令行中。在输出开始之前,将不清除目标。新的输出信息将被添加到目标当前内容的末尾。 |
STDOUT、CLIPBOARD 或文件名。STDOUT 代表命令行。Clipboard 代表 Windows 剪贴板。然后可将输出信息粘贴到任何能以已生成格式接收数据的程序中。详细信息,请参阅下面的注释。 |
STDOUT |
/AGGREGATE |
与 LIST 和 GET/EVERY 开关一同使用。如果将 AGGREGATE 设置为 ON,那么在 NODE 属性中的所有计算机响应或超时之后,LIST 和 GET 将显示其结果。如果将 AGGREGATE 设置为 OFF,LIST 和 GET 在被收到之后将立即显示其结果。 |
ON 或 OFF |
ON |
/AUTHORITY |
为连接指定颁发类型。 |
如果将 IMPLEVEL 开关设置为 Delegate(如,/IMPELEVEL:Delegate),则需要设置该开关。其中包含颁发定义字符串:"kerberos:TargetDomainName\TargetComputerName"。要成功进行该设置,需要在域控制器上启用计算机的信任委派。 |
未设置 |
开关 | 示例 |
---|---|
/NAMESPACE |
/NAMESPACE:\\root 或 /NAMESPACE:SMS |
/ROLE |
/ROLE:\\root |
/NODE |
/NODE:"TESTSERVER1","TESTSERVER2",@"C:\COMPUTERLIST.TXT" |
/IMPLEVEL |
/IMPLEVEL:Impersonate |
/AUTHLEVEL |
/AUTHLEVEL:default |
/LOCALE |
/LOCALE:MS_411 |
/PRIVILEGES |
/PRIVILEGES:ENABLE |
/TRACE |
/TRACE:ON |
/RECORD |
/RECORD:output.xml |
/INTERACTIVE |
/INTERACTIVE:ON |
/FAILFAST |
/FAILFAST:ON |
/USER |
/USER:JSMITH or /USER:""(重新将用户名和密码设置为无)。 |
/PASSWORD |
/PASSWORD:PASSWORD |
/OUTPUT |
/OUTPUT:CLIPBOARD |
/APPEND |
/APPEND:CLIPBOARD |
/AGGREGATE |
/AGGREGATE:OFF |
/AUTHORITY |
/AUTHORITY:"kerberos:TargetDomainName\TargetComputerName" |
注意
- 要浏览可能的 ROLE 和 NAMESPACE 命名空间,请使用
WMIC PATH __NAMESPACE
命令。要查看其他命名空间中可用的命名空间,请使用 /NAMESPACE 开关更改目标命名空间。例如,使用/NAMESPACE:\\root
命令可更改 ROOT 命名空间。 - GET、LIST 和 ASSOC 谓词具有WIMC 动词。
- /APPEND 和 /OUTPUT 开关会互相冲突(它们用于指定将结果发送到不同的位置)。如果它们互相冲突,系统将按照 /OUTPUT 的设置执行(/APPEND 指定将结果定向到文件的情况除外)。在这种情况下,结果将显示到 /OUTPUT 和 /APPEND 目标。
- 开关可以与命令在同一行上使用。例如,您可以使用
/NODE:"SERVER1" SERVICE
命令以获取 SERVER1 所提供的所有服务的列表。/NODE 开关的工作方式如上文所述,所有后续的命令也都被应用到 SERVER1。但是,如果 /OUTPUT 和 /APPEND 与命令在同一行上使用,/OUTPUT 和 /APPEND 所指定的结果重定向只适用于该命令。后续命令的结果将被定向到在此之前由 OUTPUT 和 APPEND 开关所指定的目标。 - 要重置开关,请将其值设为 ""。例如:
/NODE:""
NODE 设置回当前的计算机名称。
疑难解答
您有什么问题?
- 参数无效
- 值映射不包含该属性的输入值。
- 与计算机或节点的失败连接上的 RPC 错误
- 查询失败或太慢
- 输出的行和列不对齐。
- WMIC 的本地化版本不可用 [在一些多语言用户界面 (MUI) 或语言界面包中]
- Windows XP Professional 上的 XSL 文件不支持阵列
- 输入参数是 OBJECT 类型
参数无效
原因:参数名称拼写错误,或者参数不适用于所涉及的对象。要求的参数也可能丢失 — 这可能包括项值或可写入的值。
解决方案:在创建环境变量时必须指定名称、用户名和变量值。
值映射不包含该属性的输入值。
原因:可能是所需要的参数未在查询中使用。
解决方案:可以通过参考相应的托管对象格式 (MOF) 文件中的架构信息、方法的描述限定符,或参考方法的 MSDN 描述,解释输入参数的值。
可以使用 WMIC 检索一些架构信息,例如:
wmic:root\cli>alias OS list full /format:table
wmic:root\cli>process call /?:full
与计算机或节点的失败连接上的 RPC 错误。
原因:计算机或节点的防火墙被设置为阻止拨入的电话。
解决方案:
- Ping 计算机的 IP 地址,以判断该计算机是否可用。
- 禁用计算机上的防火墙。
原因:计算机有 UNIX、Linux、Windows 95、Windows 98、Windows Millennium Edition 或 Windows NT 4 操作系统,而这些操作系统没有提供启用网络的 WMI 或 WBEM 支持。
解决方案:
- 在操作系统中启用 WMI 或 WBEM 支持。
- 部署具有启用网络的 WMI 或 WBEM 支持的操作系统。
查询失败或太慢
原因:查询没有足够的参数。
解决方案:使用 Named 参数或 WHERE 子句缩小查询。例如:
wmic:root\cli>Alias OS list brief
wmic:root\cli>nteventlog application get /format:list
wmic:root\cli>UserAccount where "Domain='DomainName' and Name='UserName'" get /all
输出的行和列不对齐。
原因:显示空间太小。
解决方案:
- 增大命令 (CMD) 窗口的屏幕缓冲区大小。
- 使用 WordPad.exe(而不是记事本)打开大的文本文件。
- 在查询上使用更多条件以只显示所需要的信息。
- 使用自定义 XSL 文件显示自定义格式。
WMIC 的本地化版本不可用 [在一些多语言用户界面 (MUI) 或语言界面包中]
原因:安装了操作系统的本地化版本。
解决方案:使用 /LOCALE:ms_409 开关将英语区域设置为默认值。
Windows XP Professional 上的 XSL 文件不支持阵列
原因:操作系统不支持 XSL 文件阵列。
解决方案: 使用 XSL 从 Windows Server 2003 家族查询其他计算机,包括 Windows XP Professional
输入参数是 OBJECT 类型
原因:对于 OBJECT 类型的输入参数,还没有实现全面支持。默认值(空字符串:"")是目前支持的唯一值。
解决方案:使用下面的命令为三个用户设置 c:\test 目录的共享:
WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0