您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)PowerShell WMI的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
CIM:公共信息模型(CIM)是用于描述受管理資源(如存儲(chǔ),網(wǎng)絡(luò)或軟件組件)的結(jié)構(gòu)和行為的DMTF標(biāo)準(zhǔn)[DSP0004]。
WMI:Windows Management Instrumentation(WMI)是一種在Windows上實(shí)現(xiàn)CIM標(biāo)準(zhǔn)的CIM服務(wù)器。
WS-Man:WS-Management(WS-Man)協(xié)議是一種基于SOAP的防火墻友好協(xié)議,用于管理客戶端與CIM服務(wù)器進(jìn)行通信。
WinRM:Windows遠(yuǎn)程管理(WinRM)是Windows上的WS-Man協(xié)議的Microsoft實(shí)現(xiàn)。
管理客戶端使用WMI查詢語言(WQL)來查詢WMI中的數(shù)據(jù)。
WQL與由DMTF定義的CIM查詢語言(CQL)非常相似,但不完全相同。
PowerShell 2.0隨WMI和WsMan cmdlet一起提供。
WMI cmdlet(如Get-WmiObject)可以在DCOM上運(yùn)行,并且僅適用于WMI/Windows。
WsMan cmdlet(如Get-WsManInstance)通過WS-Man協(xié)議工作,但它們對于系統(tǒng)管理人員不是友好的。
新的Cim cmdlet提供了兩全其美的功能
豐富的PowerShell體驗(yàn),不再需要XML
通過WsMan(遠(yuǎn)程默認(rèn))和DCOM(本地默認(rèn))
使用實(shí)現(xiàn)WSMan協(xié)議的非Windows設(shè)備
簡化WMI中類名稱空間的發(fā)現(xiàn)
Win8中仍然支持舊的WMI和WsMan Cmdlet。 很容易將腳本更改為新的基于標(biāo)準(zhǔn)的CIM cmdlet。
獲取CIM cmdlet的列表
Get-Command -Module CimCmdlets
關(guān)聯(lián)表示受管理資源的兩個(gè)或多個(gè)實(shí)例(如磁盤和卷或目錄和文件)之間的關(guān)系。
給定一個(gè)類的實(shí)例,CIM服務(wù)器將返回與給定實(shí)例相關(guān)的所有實(shí)例。
您也可以通過指定目標(biāo)類或關(guān)聯(lián)關(guān)系的名稱來過濾結(jié)果。
CIM類應(yīng)實(shí)現(xiàn)在其規(guī)范中明確定義的方法(稱為外部方法)和一組標(biāo)準(zhǔn)的預(yù)定義方法。
預(yù)定義的方法稱為內(nèi)在的,它們是
枚舉一個(gè)類的實(shí)例
枚舉關(guān)聯(lián)的實(shí)例
通過在服務(wù)器上執(zhí)行查詢來獲取實(shí)例
獲取一個(gè)類的特定實(shí)例
創(chuàng)建一個(gè)新的類實(shí)例
修改一個(gè)類的實(shí)例
刪除一個(gè)類的實(shí)例
在類或?qū)嵗险{(diào)用外部方法
枚舉名稱空間中的類
獲取類架構(gòu)
訂閱指示
退訂指示
您會(huì)注意到CIM cmdlet是基于CIM操作進(jìn)行建模的。
CIM指示是受管理系統(tǒng)中事件的表示。
CIM客戶端可以通過提供指示類型和過濾表達(dá)式來訂閱接收指示,該指示類型和過濾表達(dá)式選擇將傳送給客戶端的事件。
CimSession表示與CIM服務(wù)器的連接。
CimSession并沒有與服務(wù)器建立物理永久連接,所以CimSession是一個(gè)非常輕量級(jí)的客戶端連接對象。
CimSession可以用來管理任何支持WsMan協(xié)議的服務(wù)器。
開發(fā)人員和高級(jí)IT專業(yè)人員可以使用CDXML來包裝現(xiàn)有的CIM類,以提供更友好的PS任務(wù)抽象。
有關(guān)詳細(xì)信息,請參閱(原鏈接以失效)。
開發(fā)人員可以通過實(shí)現(xiàn)CIM類并編寫CDXML來使用本地代碼來創(chuàng)建cmdlet。
WMI博客:http://blogs.msdn.com/b/wmi/
PowerShell博客:http://blogs.msdn.com/b/powershell/
腳本中心:http://technet.microsoft.com/enus/scriptcenter/bb410849
腳本專家:http://blogs.technet.com/b/heyscriptingguy/
對CIM Cmdlet
參數(shù)使用Tab
完成(ISE中的Tab + Space
顯示下拉菜單)
Get-CimInstance –Namespace <Tab>
Tab
完成類名補(bǔ)全root/cimv2
命名空間中的類Get-CimInstance -ClassName *Bios<Tab>
Get-CimInstance –Namespace root/Microsoft/Windows/smb –ClassName <tab>
注意:使用Tab補(bǔ)全僅適用于本地機(jī)器。
Get-CimClass
進(jìn)行高級(jí)類搜索Get-CimClass
Stop*
方法的類Get-CimClass -MethodName Stop*
Handle
屬性的類Get-CimClass -PropertyName Handle
*Partition
結(jié)尾具有Association
限定符的類Get-CimClass -ClassName *Partition -QualifierName Association
Get-CimClass -Namespace root/Microsoft/Windows/smb -class *Smb* -QualifierName Indication
Get-CimClass
僅適用于支持Schema檢索操作的計(jì)算機(jī)Get-CimInstance -ClassName Win32_Service
Get-CimInstance通過Microsoft.Management.Infrastructure.CimInstance#輸出
Get-CimInstance -Query "Select * from Win32_Service Where Name like 'app%'"
Get-CimInstance -ClassName Win32_Service -KeyOnly
Get-CimInstance -ClassName Win32_Service -Property Name,Status
$a = Get-CimInstance -ClassName Win32_Process
Get-CimInstance -InputObject $a[0]
.CimInstanceProperties
- 這個(gè)類的屬性列表.CimClass
- CIM為這個(gè)類提供的模式.CimClass.CimClassMethods
- 這個(gè)類支持的方法.CimSystemProperties
- 類似命名空間的系統(tǒng)屬性Get-CimInstance Win32_Service -Filter 'Name Like "app%"|export-clixml t1.xml $x = import-clixml .\t1.xml $x[0].pstypenames diff ($x) (Get-CimInstance win32_service -Filter 'Name Like "app%"')
DriveType==3
(硬盤驅(qū)動(dòng)器)獲取Win32_LogicalDisk
類的實(shí)例$disk1, $diskn = Get-CimInstance -class Win32_LogicalDisk -Filter 'DriveType = 3'
Get-CimAssociatedInstance -CimInstance $disk1
Get-CimAssociatedInstance -CimInstance $disk1 -ResultClassName Win32_DiskPartition
$service = Get-CimInstance Win32_Service -Filter 'Name Like "winrm%"'
Get-CimAssociatedInstance -InputObject $service -Association Win32_DependentService
$c = Get-CimClass Win32_Process
CimInstance
的.CimClass
屬性$c.CimClassMethods
$a = Get-CimInstance Win32_Process -Filter "Name Like 'PowerShell%'"
$a | Invoke-CimMethod -MethodName GetOwner
icim -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine="calc.exe"}
New-CimInstance -Class Win32_Environment -Property @{Name="testvar"; VariableValue="testvalue"; UserName="fareast\osajid"}
$a = Get-CimInstance -Class Win32_Environment -Filter "Name='testvar'" #; VariableValue="testvalue"; UserName="fareast\osajid"}
Set-CimInstance -InputObject $a -Property @{VariableValue="ChangedValue"} –PassThru
$a.VariableValue="ChangedValue"
Set-CimInstance -InputObject $a -PassThru
Remove-CimInstance -InputObject $a
$filter = "SELECT * FROM CIM_InstModification WHERE TargetInstance ISA 'Win32_LocalTime'"
Register-CimIndicationEvent -Query $filter -SourceIdentifier "Timer"
Get-Event -SourceIdentifier Timer
Unregister-Event -SourceIdentifier "Timer"
$Action = {$process = $Event.SourceEventArgs.NewEvent;write-host New process Name = $process.ProcessName Id = $process.ProcessId }
Register-CimIndicationEvent -ClassName Win32_ProcessStartTrace -Action $Action -SourceIdentifier "ProcessWatch"
Unregister-Event -SourceIdentifier "ProcessWatch"
-ComputerName
和-CimSession
參數(shù),用于管理遠(yuǎn)程服務(wù)器Get-CimInstance Win32_Service -ComputerName Server1
默認(rèn)情況下,在傳遞ComputerName時(shí)使用WsMan協(xié)議(包括localhost或127.0.0.1)
$s = New-CimSession -CN server1
gcim Win32_Service -CimSession $s
$so = New-CimSessionOption -Protocol DCOM
$s = New-CimSession -CN server1 -SessionOption $so
Get-CimInstance Win32_Service -CimSession $s
gcim Win32_Process -CN server1,server2 | Select Name, PsComputerName
gcim Win32_Process -CN server1,server2 | icim -MethodName GetOwner
關(guān)于“PowerShell WMI的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。