系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > 詳解WindowsPowerShell腳本的使用

詳解WindowsPowerShell腳本的使用

時(shí)間:2012-10-14 09:59:21 作者:木木 來(lái)源:系統(tǒng)之家 1. 掃描二維碼隨時(shí)看資訊 2. 請(qǐng)使用手機(jī)瀏覽器訪問(wèn): https://m.xitongzhijia.net/xtjc/20121011/17302.html 手機(jī)查看 評(píng)論

  Windows PowerShell 是一種命令行外殼程序和腳本環(huán)境,使命令行用戶和腳本編寫者可以利用 .NET Framework 的強(qiáng)大功能。它引入了許多非常有用的新概念,從而進(jìn)一步擴(kuò)展了您在 Windows 命令提示符和 Windows Script Host 環(huán)境中獲得的知識(shí)和創(chuàng)建的腳本。本教程就為大家講解WMI中的WindowsPowerShell腳本使用.

  WMI由三種基礎(chǔ)元素組成:

  1.Provider -- 批準(zhǔn)訪問(wèn)管理對(duì)象并提供有效的WMI API

  2.Classes -- 對(duì)象有屬性和方法的WMI陳述

  3.Namespace -- 類的邏輯分組

  那么PowerShell是如何做到讓W(xué)MI的訪問(wèn)更加容易的呢?

  首先,讓我們來(lái)了解一下PowerShell為WMI提供的工具?傮w來(lái)說(shuō)有5個(gè)PowerShell 命令集,這讓W(xué)MI的使用簡(jiǎn)單容易。這里我將把它們都列出來(lái),但是我接下來(lái)只會(huì)著重講其中一個(gè)(Get-WMIObject):

  1.Get-WmiObject—— 基于命名空間和提供的類別返回對(duì)象

  2.Invoke-WmiMethod——調(diào)用WMI程序(通常用于執(zhí)行靜態(tài)程序)

  3.Register-WmiEvent——用于訂閱WMI事件

  4.Remove-WmiObject -- 刪除一個(gè)現(xiàn)有的WMI類的實(shí)例(要清楚,它實(shí)際并沒(méi)有刪除類本身,而是在內(nèi)存中這個(gè)類的實(shí)例)

  5.Set-WmiInstance -- 創(chuàng)建或更新一個(gè)現(xiàn)有WMI類的實(shí)例(要謹(jǐn)慎地使用它,因?yàn)樗鼘?shí)際上會(huì)寫入WMI庫(kù))

  現(xiàn)在讓我們來(lái)解決WMI中最大的難題,搞清楚它究竟是什么,并且能提供什么數(shù)據(jù)。

  你可以依靠下面的代碼來(lái)寫程序:

  $Root = "\\.\ROOT:__namespace"

  $WMIProv = New-Object System.Management.ManagementClass

  ($Root)

  $WMIProv.GetInstances() | Select Name(但是,這比其它任務(wù)更復(fù)雜些。幸運(yùn)的是,你不用經(jīng)常這么做。)

  下面是你通過(guò)特定命名空間列出提供類的方法(默認(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(這很艱難,但是你可以通過(guò)WMI瀏覽器或微軟的PowerShell Scriptomatic等免費(fèi)工具來(lái)作弊。)

  現(xiàn)在是時(shí)候坐下來(lái)了解一下Get-WMIObject的不尋常之處了,它是五個(gè)命令集中最有用的一個(gè)。工具箱里有了它,你幾乎與所有你能想到的任一塊數(shù)據(jù)(微軟相關(guān)的系統(tǒng))都只有一線之隔。有超過(guò)600個(gè)Win32類,用來(lái)顯示CPU、內(nèi)存、磁盤、進(jìn)程、網(wǎng)絡(luò)、BIOS和USB等信息。激動(dòng)嗎?等一下你就會(huì)知道它有多簡(jiǎn)單。

  獲取操作系統(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只要嘗試一下 - 就是那么簡(jiǎn)單。

  讓我們看一個(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ù)語(yǔ)和Win32類的列表。

  看了這么多,也許你還不了解什么是WMI,小編順便幫你講解下, Windows Management Instrumentation(WMI)是能夠改變你日常生活的工具之一。維基百科解釋說(shuō)WMI旨在“規(guī)定一個(gè)獨(dú)立環(huán)境標(biāo)準(zhǔn)的非專有設(shè)置,它讓管理應(yīng)用程序之間能共享管理信息。”

發(fā)表評(píng)論

0

沒(méi)有更多評(píng)論了

評(píng)論就這些咯,讓大家也知道你的獨(dú)特見(jiàn)解

立即評(píng)論

以上留言僅代表用戶個(gè)人觀點(diǎn),不代表系統(tǒng)之家立場(chǎng)

其他版本軟件

人氣教程排行

XP系統(tǒng)推薦

官方交流群 軟件收錄