【探索PowerShell 】【十三】WMI對象

我記得在xp時代,常常使用的工具備一個叫作WMI Administrative Tools,是微軟官方提供的用來查看、編輯WMI對象的,只是如今好似不支持新的系統了。可是,在Win七、Server 2008下,這些功能均可以方便的經過PowerShell來完成。ios

首先,先來認識一下什麼是WMI對象:sql

WMI是做爲一個基本的數據庫存在於Windows系統中的。咱們能夠鏈接到WMI服務請求查詢其中所包含的信息。WMI包括了系統方方面面的信息,包括:數據庫

  •  機器信息:製造商、型號、序列號等服務器

  •  BIOS信息網絡

  •  OS信息數據結構

  •  CPU信息:種類、製造商、速度、版本ide

  •  服務器內存總量工具

  •  磁盤信息:容量、格式等this

  •  網絡信息:MAC、IP等spa

  •  其餘

能夠看出WMI內容是多麼的豐富,幾乎包括了計算機的方方面面。

利用PowerShell查看WMI成員

在PowerShell中經過如下命令列出WMI對象:

get-wmiObject -list -namespace 「root\CIMV2″ <enter> 

須要具體查看某個類的成員,使用下面的命令(例如類"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> 

 

在網絡管理環境中的多數狀況下,咱們可能要查看不一樣的計算機信息,所以,就須要使用計算機這一參數,例如:

查詢本地計算機的網絡信息

  
  
  
  
  1. $name="." 
  2.  
  3. $items = get-wmiObject -class win32_NetworkAdapterConfiguration '
  4. -namespace "root\CIMV2" -ComputerName $name | where{$_.IPEnabled -eq 「True」}  
  5.  
  6. foreach($obj in $items) {  
  7. Write-Host "DHCP Enabled:" $obj.DHCPEnabled  
  8. Write-Host "IP Address:" $obj.IPAddress  
  9. Write-Host "Subnet Mask:" $obj.IPSubnet  
  10. Write-Host "Gateway:" $obj.DefaultIPGateway  
  11. Write-Host "MAC Address:" $ojb.MACAddress  

若是查詢對象是其餘機器,只需給變量"$name"賦與其餘值便可。

例如:

  
  
  
  
  1. $name=read-host "Enter Computer Name"
  2. write-host "Computer:"$name 
  3.  
  4. $items = get-wmiObject -class win32_NetworkAdapterConfiguration '
  5. -namespace "root\CIMV2" -ComputerName $name | where{$_.IPEnabled -eq 「True」}  
  6.  
  7. foreach($obj in $items) {  
  8. Write-Host "DHCP Enabled:" $obj.DHCPEnabled  
  9. Write-Host "IP Address:" $obj.IPAddress  
  10. Write-Host "Subnet Mask:" $obj.IPSubnet  
  11. Write-Host "Gateway:" $obj.DefaultIPGateway  
  12. Write-Host "MAC Address:" $ojb.MACAddress  

配合更多的查詢命令,即可以方便的寫出一個查詢計算機信息的腳本,在本教程的結束部分,我會盡量多的提供各類經常使用腳本。本節內容就先寫到這裏。

相關文章
相關標籤/搜索