Windows PowerShell 是一種命令行外殼程序和腳本環境,使命令行用戶和腳本編寫者可以利用 .NET Framework 的強大功能。它引入了許多非常有用的新概念,從而進一步擴展了您在 Windows 命令提示符和 Windows Script Host 環境中獲得的知識和創建的腳本。本教程就為大家講解WMI中的WindowsPowerShell腳本使用.
WMI由三種基礎元素組成:
1.Provider -- 批准訪問管理對象並提供有效的WMI API
2.Classes -- 對象有屬性和方法的WMI陳述
3.Namespace -- 類的邏輯分組
那麼PowerShell是如何做到讓WMI的訪問更加容易的呢?
首先,讓我們來了解一下PowerShell為WMI提供的工具。總體來說有5個PowerShell 命令集,這讓WMI的使用簡單容易。這裡我將把它們都列出來,但是我接下來只會著重講其中一個(Get-WMIObject):
1.Get-WmiObject—— 基於命名空間和提供的類別返回對象
2.Invoke-WmiMethod——調用WMI程序(通常用於執行靜態程序)
3.Register-WmiEvent——用於訂閱WMI事件
4.Remove-WmiObject -- 刪除一個現有的WMI類的實例(要清楚,它實際並沒有刪除類本身,而是在內存中這個類的實例)
5.Set-WmiInstance -- 創建或更新一個現有WMI類的實例(要謹慎地使用它,因為它實際上會寫入WMI庫)
現在讓我們來解決WMI中最大的難題,搞清楚它究竟是什麼,並且能提供什麼數據。
你可以依靠下面的代碼來寫程序:
$Root = "\\.\ROOT:__namespace"
$WMIProv = New-Object System.Management.ManagementClass
($Root)
$WMIProv.GetInstances() | Select Name(但是,這比其它任務更復雜些。幸運的是,你不用經常這麼做。)
下面是你通過特定命名空間列出提供類的方法(默認是Root\CIM2,它包括所有的Microsoft Win32類):
# On local machine
Get-WmiObject –Namespace Root\SecurityCenter –List
# On Remote machine
Get-WmiObject –Namespace Root\SecurityCenter –List
–Computer core
# To filter you can use wildcards
Get-WmiObject –Namespace Root\SecurityCenter –List
*firewall*
# To list the classes for HyperV on remote server
Get-WmiObject –Namespace Root\Virtualization –List
–Computer core(這很艱難,但是你可以通過WMI浏覽器或微軟的PowerShell Scriptomatic等免費工具來作弊。)