亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PowerShell WMI的示例分析

發布時間:2021-12-18 09:20:29 來源:億速云 閱讀:158 作者:小新 欄目:網絡安全

這篇文章將為大家詳細講解有關PowerShell WMI的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

什么是CIM/WMI?

CIM:公共信息模型(CIM)是用于描述受管理資源(如存儲,網絡或軟件組件)的結構和行為的DMTF標準[DSP0004]。

WMI:Windows Management Instrumentation(WMI)是一種在Windows上實現CIM標準的CIM服務器

什么是WS-Man/WinRM?

WS-Man:WS-Management(WS-Man)協議是一種基于SOAP的防火墻友好協議,用于管理客戶端與CIM服務器進行通信。

WinRM:Windows遠程管理(WinRM)是Windows上的WS-Man協議的Microsoft實現。

什么是WQL?

管理客戶端使用WMI查詢語言(WQL)來查詢WMI中的數據。

WQL與由DMTF定義的CIM查詢語言(CQL)非常相似,但不完全相同。

什么是新的CIM Cmdlet?

PowerShell 2.0隨WMI和WsMan cmdlet一起提供。

為什么要在3.0中有另一組cmdlet?

WMI cmdlet(如Get-WmiObject)可以在DCOM上運行,并且僅適用于WMI/Windows。

WsMan cmdlet(如Get-WsManInstance)通過WS-Man協議工作,但它們對于系統管理人員不是友好的。

新的Cim cmdlet提供了兩全其美的功能

  • 豐富的PowerShell體驗,不再需要XML

  • 通過WsMan(遠程默認)和DCOM(本地默認)

  • 使用實現WSMan協議的非Windows設備

  • 簡化WMI中類名稱空間的發現

Win8中仍然支持舊的WMI和WsMan Cmdlet。 很容易將腳本更改為新的基于標準的CIM cmdlet。

獲取CIM cmdlet的列表

Get-Command -Module CimCmdlets

什么是關聯?

關聯表示受管理資源的兩個或多個實例(如磁盤和卷或目錄和文件)之間的關系。

給定一個類的實例,CIM服務器將返回與給定實例相關的所有實例。

您也可以通過指定目標類或關聯關系的名稱來過濾結果。

什么是各種CIM操作?

CIM類應實現在其規范中明確定義的方法(稱為外部方法)和一組標準的預定義方法。

預定義的方法稱為內在的,它們是

  • 枚舉一個類的實例

  • 枚舉關聯的實例

  • 通過在服務器上執行查詢來獲取實例

  • 獲取一個類的特定實例

  • 創建一個新的類實例

  • 修改一個類的實例

  • 刪除一個類的實例

  • 在類或實例上調用外部方法

  • 枚舉名稱空間中的類

  • 獲取類架構

  • 訂閱指示

  • 退訂指示

您會注意到CIM cmdlet是基于CIM操作進行建模的。

什么是CIM指示?

CIM指示是受管理系統中事件的表示。

CIM客戶端可以通過提供指示類型和過濾表達式來訂閱接收指示,該指示類型和過濾表達式選擇將傳送給客戶端的事件。

什么是CimSession

CimSession表示與CIM服務器的連接。

CimSession并沒有與服務器建立物理永久連接,所以CimSession是一個非常輕量級的客戶端連接對象。

CimSession可以用來管理任何支持WsMan協議的服務器。

創建基于CIM的cmdlet

開發人員和高級IT專業人員可以使用CDXML來包裝現有的CIM類,以提供更友好的PS任務抽象。

有關詳細信息,請參閱(原鏈接以失效)。

開發人員可以通過實現CIM類并編寫CDXML來使用本地代碼來創建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/

在WMI中查找命名空間和類

在PowerShell 3.0中發布的新CIM Cmdlet使得發現WMI命名空間和類變得更加容易。

CIM Cmdlet參數使用Tab完成(ISE中的Tab + Space顯示下拉菜單)

查找頂級命名空間

Get-CimInstance –Namespace <Tab>

使用Tab完成類名補全

如果未指定命名空間, 則顯示默認root/cimv2命名空間中的類

Get-CimInstance -ClassName *Bios<Tab>

Get-CimInstance –Namespace root/Microsoft/Windows/smb –ClassName <tab>

注意:使用Tab補全僅適用于本地機器。

使用Get-CimClass進行高級類搜索

列出root/cimv2命名空間中的所有類

Get-CimClass

列出包含Stop*方法的類

Get-CimClass -MethodName Stop*

列出具有名為Handle屬性的類

Get-CimClass -PropertyName Handle

查找以*Partition結尾具有Association限定符的類

Get-CimClass -ClassName *Partition -QualifierName Association

Get-CimClass -Namespace root/Microsoft/Windows/smb -class *Smb* -QualifierName Indication

注意:Get-CimClass僅適用于支持Schema檢索操作的計算機


從WMI獲取數據

查找Win32_Service類的實例

Get-CimInstance -ClassName Win32_Service

Get-CimInstance通過Microsoft.Management.Infrastructure.CimInstance#輸出

通過WQL查詢獲取數據

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 Cim實例中保存的是客戶端上服務器對象狀態的快照

$a = Get-CimInstance -ClassName Win32_Process

注意:作為輸入對象其傳遞的對象不會更改

Get-CimInstance -InputObject $a[0]

如果您有使用WMI cmdlet的腳本,則可以輕松將它們遷移到新的CIM Cmdlet


Peeping into CimInstance

CimInstance類具有以下屬性

.CimInstanceProperties - 這個類的屬性列表

.CimClass - CIM為這個類提供的模式

.CimClass.CimClassMethods - 這個類支持的方法

.CimSystemProperties - 類似命名空間的系統屬性

注意:為使Cim Schema準確,CIM Server必須支持類模式檢索操作。

CimInstance是可移植的 - 支持完整的序列化和反序列化

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%"')

Working with Associations

使用過濾條件DriveType==3 (硬盤驅動器)獲取Win32_LogicalDisk類的實例

$disk1, $diskn = Get-CimInstance -class Win32_LogicalDisk -Filter 'DriveType = 3'

獲取關聯的實例 disk1

Get-CimAssociatedInstance -CimInstance $disk1

給定一個Win32_LogicalDisk的實例,給出特定類型的關聯實例

Get-CimAssociatedInstance -CimInstance $disk1 -ResultClassName Win32_DiskPartition

查找WinRM服務所依賴的服務

$service = Get-CimInstance Win32_Service -Filter 'Name Like "winrm%"'

Get-CimAssociatedInstance -InputObject $service -Association Win32_DependentService


調用CIM方法

查看一個類中有哪些方法

$c = Get-CimClass Win32_Process

你也可以使用CimInstance.CimClass屬性

$c.CimClassMethods

在實例上調用一個方法

$a = Get-CimInstance Win32_Process -Filter "Name Like 'PowerShell%'"

$a綁定到InputObject參數

$a | Invoke-CimMethod -MethodName GetOwner

調用類靜態方法 - icim是Invoke-CimMethod的別名

icim -ClassName Win32_Process -MethodName Create -Arguments @{CommandLine="calc.exe"}


執行CIM操作

創建一個實例 - CIM內部支持創建、修改、刪除實例方法

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屬性來實現

要更新服務器上的對象,請調用Set-CimInstance

$a.VariableValue="ChangedValue"

Set-CimInstance -InputObject $a -PassThru

刪除一個實例

Remove-CimInstance -InputObject $a


事件 – CIM Indications

$filter = "SELECT * FROM CIM_InstModification WHERE TargetInstance ISA 'Win32_LocalTime'"

使用過濾器訂閱事件

Register-CimIndicationEvent -Query $filter -SourceIdentifier "Timer"

使用PowerShell事件機制獲取事件

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"


Working with remote servers

CIM Cmdlet具有-ComputerName-CimSession參數,用于管理遠程服務器

Get-CimInstance Win32_Service -ComputerName Server1

默認情況下,在傳遞ComputerName時使用WsMan協議(包括localhost或127.0.0.1)

如果對同一臺服務器執行多個操作,建議創建一個CimSession

$s = New-CimSession -CN server1

gcim Win32_Service -CimSession $s

管理低級別的Windows服務器

有兩種方法可以管理低級別Windows服務器

安裝Windows Management Framework 3.0(推薦)或使用DCOM協議

$so = New-CimSessionOption -Protocol DCOM$s = New-CimSession -CN server1 -SessionOption $soGet-CimInstance Win32_Service -CimSession $s

CimInstance的PSComputerName屬性顯示源計算機名稱

gcim Win32_Process -CN server1,server2 | Select Name, PsComputerName

如果傳遞CN(ComputerName)或CimSession來獲取CimInstance,則不必為后續操作再次指定它。

gcim Win32_Process -CN server1,server2 | icim -MethodName GetOwner

關于“PowerShell WMI的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

色达县| 双牌县| 紫金县| 南安市| 庐江县| 中西区| 南康市| 同德县| 修武县| 祁连县| 团风县| 巴里| 筠连县| 濮阳县| 浏阳市| 都兰县| 曲周县| 嵊州市| 丰顺县| 乐业县| 尚义县| 大洼县| 镇雄县| 西贡区| 金湖县| 和平区| 堆龙德庆县| 连平县| 荣成市| 大余县| 法库县| 宁海县| 塔城市| 宜昌市| 临沂市| 丘北县| 阜新市| 建瓯市| 卢龙县| 尚志市| 广水市|