需要具体查看某个类的成员,使用下面的命令(例如类"win32_process"):
get-wmiobject -class win32_process -namespace "root/cimv2" | get-member
可以看到每个有的成员是属性(Property),而有的则是方法(Method)。 那么,有两个问题: 为什么要使用-namespace "root/cimv2"? cimv2是WMI的一个命名空间,每个命名空间下有不同的WMI对象成员。cimv2是其默认设置。可以按照以下步骤进行修改: 控制面板 -> 管理工具 -> 计算机管理 -> 服务和应用程序 -> 右键"WMI控制" -> 属性 -> 高级 参数"-namespace"并非必须,但是,使用它有两个好处,一是保证我们能准确的查看指定命名空间下的WMI对象,因为有时默认命名空间并非我们所希望查看的;二是如果不指定命名空间,被设置过的计算机可能拒绝我们的访问请求。 注:因为我使用英文版系统,上述步骤中个别名称可能不准确。 在如上图所示的界面,即可修改默认路径。 另一个问题是,查看成员的类型有什么用? 如果一个成员是方法,那么,我们可以调用它。如果一个成员是属性,我们则可以查看它的值。但是,需要注意的是,不同的属性成员有不同的数据结构,有的是"System.String",有的是"System.UInt32",有的则是"System.String[ ]",在使用时,应当注意数据格式,否则会报错的。 如果我们需要管理网络中的计算机,则需要指定计算机名称: get-wmiObject -list -namespace “root/CIMV2″ -computername 计算机名 <enter> 好了,现在来具体操作,查看具体信息。 例: 查看BIOS信息 get-wmiobject -class win32_bios -namespace "root/cimv2" <enter> 运行结果:
查看服务信息
get-wmiobject -class win32_service -namespace "root/cimv2" | format-list * <enter> 查看机器信息
get-wmiobject -class win32_computersystem | format-list * <enter>
在网络管理环境中的多数情况下,我们可能要查看不同的计算机信息,因此,就需要使用计算机这一参数,例如:
查询本地计算机的网络信息
$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 }
例如:
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 }
新闻热点
疑难解答
图片精选