您好,登錄后才能下訂單哦!
WMI中的Windows PowerShell腳本使用方法,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
Windows Management Instrumentation(WMI)是能夠改變你日常生活的工具之一。雖然自90年代初期它就已經(jīng)存在,但是由于WMI的復(fù)雜性,其推廣速度非常緩慢。Windows PowerShell打破了這個(gè)障礙,它讓W(xué)MI的使用更容易,這也改變了IT行業(yè)的面貌。
在我們著重于鉆研如何用PowerShell來簡化WMI之前,先讓我們來看一看什么是WMI。這是個(gè)最簡單的術(shù)語,你可以認(rèn)為WMI是一個(gè)充滿了查提供一致且可靠的各種格式數(shù)據(jù)的資料庫。
維基百科解釋說WMI旨在“規(guī)定一個(gè)獨(dú)立環(huán)境標(biāo)準(zhǔn)的非專有設(shè)置,它讓管理應(yīng)用程序之間能共享管理信息?!边@是一個(gè)相當(dāng)抽象的解釋,而WMI可能已經(jīng)開始在做“環(huán)境獨(dú)立”的嘗試,現(xiàn)在情況已經(jīng)改變,這些天開始思考下WMI會(huì)變成什么樣子吧。當(dāng)你今天聽說WMI時(shí),它通常是通過內(nèi)置供應(yīng)程序用于微軟的WMI實(shí)施環(huán)境中。這也是本文將要關(guān)注的點(diǎn)。
WMI由三種基礎(chǔ)元素組成:
Provider -- 批準(zhǔn)訪問管理對(duì)象并提供有效的WMI API
Classes -- 對(duì)象有屬性和方法的WMI陳述
Namespace -- 類的邏輯分組
那么PowerShell是如何做到讓W(xué)MI的訪問更加容易的呢?
首先,讓我們來了解一下PowerShell為WMI提供的工具??傮w來說有5個(gè)PowerShell 命令集,這讓W(xué)MI的使用簡單容易。這里我將把它們都列出來,但是我接下來只會(huì)著重講其中一個(gè)(Get-WMIObject):
Get-WmiObject—— 基于命名空間和提供的類別返回對(duì)象
Invoke-WmiMethod——調(diào)用WMI程序(通常用于執(zhí)行靜態(tài)程序)
Register-WmiEvent——用于訂閱WMI事件
Remove-WmiObject -- 刪除一個(gè)現(xiàn)有的WMI類的實(shí)例(要清楚,它實(shí)際并沒有刪除類本身,而是在內(nèi)存中這個(gè)類的實(shí)例)
Set-WmiInstance -- 創(chuàng)建或更新一個(gè)現(xiàn)有WMI類的實(shí)例(要謹(jǐn)慎地使用它,因?yàn)樗鼘?shí)際上會(huì)寫入WMI庫)
現(xiàn)在讓我們來解決WMI中***的難題,搞清楚它究竟是什么,并且能提供什么數(shù)據(jù)。
你可以依靠下面的代碼來寫程序:
$Root = "\\.\ROOT:__namespace" $WMIProv = New-Object System.Management.ManagementClass ($Root) $WMIProv.GetInstances() | Select Name
(但是,這比其它任務(wù)更復(fù)雜些。幸運(yùn)的是,你不用經(jīng)常這么做。)
下面是你通過特定命名空間列出提供類的方法(默認(rèn)是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等免費(fèi)工具來作弊。)
現(xiàn)在是時(shí)候坐下來了解一下Get-WMIObject的不尋常之處了,它是五個(gè)命令集中最有用的一個(gè)。工具箱里有了它,你幾乎與所有你能想到的任一塊數(shù)據(jù)(微軟相關(guān)的系統(tǒng))都只有一線之隔。有超過600個(gè)Win32類,用來顯示CPU、內(nèi)存、磁盤、進(jìn)程、網(wǎng)絡(luò)、BIOS和USB等信息。激動(dòng)嗎?等一下你就會(huì)知道它有多簡單。
獲取操作系統(tǒng)的信息:
Get-WmiObject –class win32_OperatingSystem
獲取計(jì)算機(jī)系統(tǒng)的信息
Get-WmiObject –class win32_ComputerSystem
獲取磁盤信息:
Get-WmiObject –class Win32_LogicalDisk
獲取網(wǎng)絡(luò)信息:
Get-WmiObject –class Win32_NetworkAdapterConfiguration
只要嘗試一下 - 就是那么簡單。
讓我們看一個(gè)使用WMI獲取IP信息的例子。下面有效的腳本代替了ipconfig和它通常的awful輸出。
function Get-IP { [Cmdletbinding()] Param( [alias('dnsHostName')] [Parameter(ValueFromPipelineByPropertyName=$true,ValueFromPipeline= $true) [string]$ComputerName = $Env:COMPUTERNAME ) process { $NICs = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter "IPEnabled='$True'" -ComputerName $ComputerName foreach ($Nic in $NICs) { $myobj = @{ Name = $Nic.Description MacAddress = $Nic.MACAddress IP4 = $Nic.IPAddress | where{$_ -match "\d+\.\d+\.\d+\.\d+"} IP6 = $Nic.IPAddress | where{$_ -match "\:\:"} IP4Subnet = $Nic.IPSubnet | where{$_ -match "\d+\.\d+\.\d+\.\d+"} DefaultGWY = $Nic.DefaultIPGateway | Select -First 1 DNSServer = $Nic.DNSServerSearchOrder WINSPrimary = $Nic.WINSPrimaryServer WINSSecondary = $Nic.WINSSecondaryServer } $obj = New-Object PSObject -Property $myobj $obj.PSTypeNames.Clear() $obj.PSTypeNames.Add('BSonPosh.IPInfo') $obj } } }
你可以在微軟的網(wǎng)站上找到更多的關(guān)于WMI的信息,還能看到WMI術(shù)語和Win32類的列表。
關(guān)于WMI中的Windows PowerShell腳本使用方法問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。