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

在如上圖所示的界面,即可修改默認(rèn)路徑。
另一個(gè)問題是,查看成員的類型有什么用?
如果一個(gè)成員是方法,那么,我們可以調(diào)用它。如果一個(gè)成員是屬性,我們則可以查看它的值。但是,需要注意的是,不同的屬性成員有不同的數(shù)據(jù)結(jié)構(gòu),有的是"System.String",有的是"System.UInt32",有的則是"System.String[ ]",在使用時(shí),應(yīng)當(dāng)注意數(shù)據(jù)格式,否則會(huì)報(bào)錯(cuò)的。
如果我們需要管理網(wǎng)絡(luò)中的計(jì)算機(jī),則需要指定計(jì)算機(jī)名稱:
get-wmiObject -list -namespace “root\CIMV2″ -computername 計(jì)算機(jī)名 <enter>
好了,現(xiàn)在來具體操作,查看具體信息。
例:
查看BIOS信息
get-wmiobject -class win32_bios -namespace "root\cimv2" <enter>
運(yùn)行結(jié)果:
查看服務(wù)信息
get-wmiobject -class win32_service -namespace "root\cimv2" | format-list * <enter> 查看機(jī)器信息
get-wmiobject -class win32_computersystem | format-list * <enter>
在網(wǎng)絡(luò)管理環(huán)境中的多數(shù)情況下,我們可能要查看不同的計(jì)算機(jī)信息,因此,就需要使用計(jì)算機(jī)這一參數(shù),例如:
查詢本地計(jì)算機(jī)的網(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
}
如果查詢對(duì)象是其他機(jī)器,只需給變量"$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
}
配合更多的查詢命令,便可以方便的寫出一個(gè)查詢計(jì)算機(jī)信息的腳本,在本教程的結(jié)束部分,我會(huì)盡可能多的提供各種常用腳本。本節(jié)內(nèi)容就先寫到這里。
相關(guān)文章
PowerShell腳本中控制Windows DNS服務(wù)的方法
這篇文章主要介紹了PowerShell腳本中控制Windows DNS服務(wù)的方法,本文給出了相關(guān)例子和命令,需要的朋友可以參考下2014-08-08
PowerShell獲取Windows用戶列表、用戶信息的方法
這篇文章主要介紹了PowerShell獲取Windows用戶列表、用戶信息的方法,一個(gè)簡(jiǎn)單的入門例子,需要的朋友可以參考下2014-08-08
利用PowerShell一鍵下載Nuget某個(gè)包的所有版本
這篇文章主要為大家詳細(xì)介紹了如何利用PowerShell一鍵下載Nuget某個(gè)包的所有版本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2024-12-12
PowerShell中獲取Windows系統(tǒng)序列號(hào)的腳本分享
這篇文章主要介紹了PowerShell中獲取Windows系統(tǒng)序列號(hào)的腳本分享,本文方法是讀取注冊(cè)表中的信息,然后處理成序列號(hào)輸出,需要的朋友可以參考下2014-11-11
Windows Powershell Switch 循環(huán)
這篇文章主要介紹了Windows Powershell Switch 循環(huán)以及PowerShell中數(shù)組可以與switch語句結(jié)合,產(chǎn)生意想不到的效果。2014-10-10
PowerShell實(shí)現(xiàn)參數(shù)互斥示例
這篇文章主要介紹了PowerShell實(shí)現(xiàn)參數(shù)互斥示例,本文直接給出示例代碼,需要的朋友可以參考下2015-06-06
Windows Powershell排序和分組管道結(jié)果
本文通過實(shí)例,詳細(xì)介紹了Powershell如何對(duì)管道結(jié)果進(jìn)行排序和分組,非常的實(shí)用,有需要的朋友可以參考下2014-09-09



