探索PowerShell(十三) WMI對象介紹
首先,先來認識一下什么是WMI對象:
WMI是作為一個基本的數(shù)據(jù)庫存在于Windows系統(tǒng)中的。我們可以連接到WMI服務請求查詢其中所包含的信息。WMI包括了系統(tǒng)方方面面的信息,包括:
• 機器信息:制造商、型號、序列號等
• BIOS信息
• OS信息
• CPU信息:種類、制造商、速度、版本
• 服務器內(nèi)存總量
• 磁盤信息:容量、格式等
• 網(wǎng)絡(luò)信息:MAC、IP等
• 其他
可以看出WMI內(nèi)容是多么的豐富,幾乎包括了計算機的方方面面。
利用PowerShell查看WMI成員
在PowerShell中通過以下命令列出WMI對象:
get-wmiObject -list -namespace “root\CIMV2″ <enter>
需要具體查看某個類的成員,使用下面的命令(例如類"win32_process"):
可以看到每個有的成員是屬性(Property),而有的則是方法(Method)。get-wmiobject -class win32_process -namespace "root\cimv2" | get-member
那么,有兩個問題:
為什么要使用-namespace "root\cimv2"?
cimv2是WMI的一個命名空間,每個命名空間下有不同的WMI對象成員。cimv2是其默認設(shè)置??梢园凑找韵虏襟E進行修改:
控制面板 -> 管理工具 -> 計算機管理 -> 服務和應用程序 -> 右鍵"WMI控制" -> 屬性 -> 高級
參數(shù)"-namespace"并非必須,但是,使用它有兩個好處,一是保證我們能準確的查看指定命名空間下的WMI對象,因為有時默認命名空間并非我們所希望查看的;二是如果不指定命名空間,被設(shè)置過的計算機可能拒絕我們的訪問請求。
注:因為我使用英文版系統(tǒng),上述步驟中個別名稱可能不準確。

在如上圖所示的界面,即可修改默認路徑。
另一個問題是,查看成員的類型有什么用?
如果一個成員是方法,那么,我們可以調(diào)用它。如果一個成員是屬性,我們則可以查看它的值。但是,需要注意的是,不同的屬性成員有不同的數(shù)據(jù)結(jié)構(gòu),有的是"System.String",有的是"System.UInt32",有的則是"System.String[ ]",在使用時,應當注意數(shù)據(jù)格式,否則會報錯的。
如果我們需要管理網(wǎng)絡(luò)中的計算機,則需要指定計算機名稱:
get-wmiObject -list -namespace “root\CIMV2″ -computername 計算機名 <enter>
好了,現(xiàn)在來具體操作,查看具體信息。
例:
查看BIOS信息
get-wmiobject -class win32_bios -namespace "root\cimv2" <enter>
運行結(jié)果:

查看服務信息
get-wmiobject -class win32_service -namespace "root\cimv2" | format-list * <enter> 查看機器信息
get-wmiobject -class win32_computersystem | format-list * <enter>
在網(wǎng)絡(luò)管理環(huán)境中的多數(shù)情況下,我們可能要查看不同的計算機信息,因此,就需要使用計算機這一參數(shù),例如:
查詢本地計算機的網(wǎng)絡(luò)信息
$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
}
如果查詢對象是其他機器,只需給變量"$name"賦與其他值即可。
例如:
$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
}
配合更多的查詢命令,便可以方便的寫出一個查詢計算機信息的腳本,在本教程的結(jié)束部分,我會盡可能多的提供各種常用腳本。本節(jié)內(nèi)容就先寫到這里。
相關(guān)文章
Windows PowerShell是啥?看完本文你就懂它了
這篇文章主要介紹了Windows PowerShell是啥?Windows PowerShell是什么?Windows PowerShell有哪些特性?Windows PowerShell有什么用?看完本文你就懂它了,需要的朋友可以參考下2015-04-04使用PowerShell操作Windows服務的命令小結(jié)
這篇文章主要介紹了使用PowerShell操作Windows服務的命令小結(jié),本文只是做了一個命令列表,需要的朋友可以參考下2014-08-08PowerShell數(shù)組結(jié)合switch語句產(chǎn)生的奇特效果介紹
這篇文章主要介紹了PowerShell數(shù)組結(jié)合switch語句產(chǎn)生的奇特效果介紹,產(chǎn)生了類似枚舉的效果,需要的朋友可以參考下2014-08-08Powershell 腳本數(shù)字簽名實現(xiàn)方法
這篇文章主要介紹了Powershell 腳本數(shù)字簽名實現(xiàn)方法,需要的朋友可以參考下2017-10-10PowerShell入門教程之高效使用PowerShell交互式運行環(huán)境的幾個小技巧
這篇文章主要介紹了PowerShell入門教程之高效使用PowerShell交互式運行環(huán)境的幾個小技巧,本文也可以說是使用PowerShell的一些好習慣,需要的朋友可以參考下2014-10-10Windows Powershell Where-Object 條件過濾
本篇會對條件判斷進行實際應用。在管道中可以通過條件判斷過濾管道結(jié)果,Where-Object會對集合逐個過濾,將符合條件的結(jié)果保留。2014-10-10