主頁 > 知識庫 > 探索PowerShell (四) PowerShell的對象、格式與參數(shù)

探索PowerShell (四) PowerShell的對象、格式與參數(shù)

熱門標(biāo)簽:電商外呼系統(tǒng)排名 AI智能電銷機器人壞處 合肥電銷外呼系統(tǒng)供應(yīng)商 沈陽ai電銷智能機器人 黑暗之魂3地圖標(biāo)注 地圖標(biāo)注審核周期 如何申請400的電話呀 電話機器人對家居行業(yè)幫助大嗎 蘭州電銷機器人加盟

今天貼博文晚了,感謝各位能繼續(xù)關(guān)注!

本節(jié)將要給大家介紹一下PowerShell下的對象,基本格式以及參數(shù)。依然屬于PowerShell的基礎(chǔ)。

PowerShell中的對象

在本教程開篇我們說過,PowerShell是基于面向?qū)ο蠡?,不像傳統(tǒng)的shell那樣基于文本。這其中最主要的原因就是因為Win平臺在管理操作上主要以面向?qū)ο鬄橹鳎虼藶榱朔舷到y(tǒng)特點和我們的操作習(xí)慣,PowerShell也繼承了這一特色。因此,不像傳統(tǒng)的shell,在PowerShell中,我們可以隨意地與對象進(jìn)行互動,

先來認(rèn)識一下,什么是對象——object

不知各位有沒有從事開發(fā)的經(jīng)驗。實際上,面向?qū)ο筮@一概念的提出就是為了更好用程序語言解決現(xiàn)實問題而提出的。

廢話不多說,直接切入正題。在PowerShell中,“對象”是指我們收集信息或者執(zhí)行操作的行為。包括屬性(信息,我們可以收集)和方法(我們可以執(zhí)行)。

有一個生動的例子——“燈泡”。對象是顯而易見的,它是一個燈泡。一個燈泡的屬性可能包括了其顏色,功率和類型(熒光燈,白熾燈或鹵素?zé)簦τ谒牟僮?,或者稱之為方法,則是我們可以執(zhí)行的行為,如打開和關(guān)閉。這很容易理解!

讓我們看看在PowerShell中一個對象的屬性以及其方法。

首先,你可能會經(jīng)常使用它"Get-Member”,這個cmdlet是用來檢查一個對象具有哪些屬性和方法的。

例如:

get-service | get-member 

使用這條命令就可以查看"get-service”t的屬性和方法。在這個例子中,我們使用管道符來進(jìn)行命令的傳遞。運行結(jié)果如下:

當(dāng)然,我們可以使用"get-member"的參數(shù)來查看"get-service"的所有的屬性類對象,或者方法類對象。

例如:

查看"get-service"的所有屬性類對象

Get-Service | Get-Member -MemberType Propertyenter> 

查看get-service"的所有方法類對象

Get-Service | Get-Member -MemberType Methodenter> 

為什么我們?nèi)绱说膹娬{(diào)對象?原因就是在PowerShell中,所有的一切都是對象。

例如:

我們要找出指定日期寫入d:\的文件有哪些,使用如下命令:

Get-ChildItem -Path d:\ -Recurse | Where-Object {$_.LastWriteTime -gt "01/01/2010"}enter>

現(xiàn)在來解釋一下:

首先,"get-childitem"是用來枚舉我們的文件系統(tǒng)的,使用"-path"參數(shù),將路徑指向"d:\",使用"-recurse"參數(shù),意味著將顯示所有的文件,甚至是子目錄下的。接下來,我們將結(jié)果使用管道符傳遞給循環(huán)聲明"where-object"中,用來篩選出符合條件的結(jié)果。

那么,"lastwritetime"又是什么?

我們使用如下命令看看"get-childitem"都有哪些屬性可供我們篩選:

get-chileitem | get-member

可以發(fā)現(xiàn)其中一條:

對,就是這個。我們需要篩選出的對象屬性就是最后寫日期。在后面的定義中可以看到"LastWriteTime"會將一個"Syetem.DateTime"數(shù)據(jù)類型作為反饋。因此,在整個語句的后半部,我們使用了"-gt"進(jìn)行進(jìn)一步的篩選,"-gt"是"greater than"的縮寫,意味“大于”。在以后的教程中我將會介紹更多類似這樣的操作。前面說到,"LastWriteTime"是一個"Syetem.DateTime"類型的數(shù)據(jù),因此,我們最終使用類似"01/01/2010"這樣的表達(dá)。這一點需要大家多加注意,在以后的運用中需要注意數(shù)據(jù)類型。

后續(xù)的教程中,我還會盡可能全面的介紹WMI、COM以及 .NET,不過,我們現(xiàn)在知道并掌握上面的就足夠了。

PowerShell的格式

在這一小節(jié),我將介紹PowerShell中的格式化輸出。當(dāng)我們使用一個cmdlet時,參數(shù)"format-"允許我們選擇一種習(xí)慣的輸出模式。使用以下命令試一試:

Get-Command Format-* enter>

其結(jié)果為:

好了,這一個知識點很簡單。請各位童鞋使用如下命令試一試,結(jié)果怎么樣看看就知道了。

get-childitem c:\windows | format-table enter>get-childitem c:\windows | format-table -autosize enter>get-childitem c:\windows | format-custom enter>get-childitem c:\windows | format-list enter>get-childitem c:\windows | format-list -Property FullName enter>get-childitem c:\windows | format-wide enter>

當(dāng)然,復(fù)雜些的還有以下這些,我不想解釋過多,大家只要肯親自動手試一試,一眼就能看明白。

Get-ChildItem C:\Windows -Recurse | Format-List -Property FullName,CreationTime,LastWriteTimeenter>

Get-ChildItem C: | Format-Wide -Column 3enter>

另外,在其他cmdlet中,存在其他格式的輸出。例如,在"get-process"中就有"group-object","Get-EventLog"中我們可能用到"Sort-Object",甚至,我們可以輸出為特定格式的文件,例如使用"Convertto-HTML"輸出為html,使用"Export-CSV"輸出為表格文件(可以使用Excel打開)。

統(tǒng)統(tǒng)舉例如下(記住管道符):

Get-Process | Group-Object Companyenter>

Get-EventLog System | Group-Object eventidenter>

Get-EventLog System | Group-Object eventid | Sort-Object Count -descendingenter>

Get-Process | ConvertTo-htmlenter>

Get-Process | ConvertTo-html | out-file “Processes.html”enter>

Get-Process | Export-CSV Processes.csventer>

至于打開文件,使用如下命令即可:

Invoke-Item Processes.htmlenter> 

Invoke-Item Processes.csventer>

看看截圖吧(輸出為".CSV"文件):

使用"Invoke-Item"命令打開:

Invoke-Item Processes.csv Enter>

使用PowerShell的格式化輸出是不是很簡單呢?個人認(rèn)為比VBScript要更加容易上手一些。管理系統(tǒng)更加方便!

PowerShell的常見參數(shù)

我們前面介紹過,為了簡化我們的記憶,PowerShell對cmdlet使用了全新的"動詞-名詞"的命名方式,更加方便的是,幾乎所有的cmdlet都擁有統(tǒng)一的標(biāo)準(zhǔn)化參數(shù),當(dāng)然,我說了,幾乎所有的——并非全部。下面這個列表,列舉出了“公共參數(shù)”(這些參數(shù)的名稱是我們無法自定義使用的):


-confirm 在執(zhí)行cmdlet前提示用戶。

-debug  提供相關(guān)調(diào)試信息。

-ErrorAction 提示cmdlet在執(zhí)行某項操作時可能出現(xiàn)的錯誤。如:繼續(xù),停止等。 

-ErrorVariable  使用一個特定的變量($error)來保存錯誤信息。

-OutVariable 用于保存輸出信息的變量。

-OutBuffer 確定在進(jìn)行下一次管道傳遞前需要緩存的對象數(shù)量。

-Verbose 為我們提供更多細(xì)節(jié)。

-whatif  并不會真正執(zhí)行cmdlet,只是告訴你會發(fā)生什么。


此外,PowerShell中還保留了這些參數(shù)的下列別名:vb、db、ea、ev、ov 和 ob。

參數(shù)太多不好記?好辦,記得使用"Tab"鍵,如:

get-service -Tab> 

或者使用幫助命令"get-help":

get-help get-service -full Enter>

好了,我們做一些簡單的演示吧:

Set-ExecutionPolicy Unrestricted -whatif enter> 

是不是很方便?在執(zhí)行cmdlet之前,"-whatif"就會告訴你接下來會發(fā)生什么。

那么如下這條cmdlet呢:

Set-ExecutionPolicy Unrestricted -confirm enter> 

是的,它將返回一條驗證操作,以獲取用戶的進(jìn)一步許可。只是"Y"、"A"、"N"、"L"與"?"我們都能輕易理解,那么"S"呢?

請注意觀察以下執(zhí)行結(jié)果:

Set-ExecutionPolicy Unrestricted -confirmenter>  

Are you sure you want…  

Senter> (places the prompt in suspend mode as denoted by “>>”).  

>>Get-ExecutionPolicyenter>  

Resricted (or whatever the policy is set to).  

>>exitenter> (Typing “exit” leaves suspend mode and returns to the original command)  

Are you sure you want…  

Yenter> (Confirms “Yes” and sets the ExecutionPolicy to “Unrestricted”). 

執(zhí)行實例截圖:

聰明的你,明白了么?


好了,本節(jié)內(nèi)容就到這里。本節(jié)中對PowerShell中對象、格式與參數(shù)的介紹,僅僅是其冰山一角,在后續(xù)的教程中,我們將繼續(xù)利用今天學(xué)習(xí)的來進(jìn)行工作。當(dāng)然,在本節(jié)中還有很多其他我們尚未涉及到的內(nèi)容、參數(shù)等,希望各位童鞋能積極利用PowerShell中所提供的工具進(jìn)行探索,如"get-help"、"get-member"命令等。

Ps:最后,非常感謝各位能熱情而持續(xù)的關(guān)注本教程,如果您有任何意見或問題,請進(jìn)行留言,我將做詳細(xì)解答!謝謝。

標(biāo)簽:常州 黔南 通遼 淮南 河池 隴南 河北 黔南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《探索PowerShell (四) PowerShell的對象、格式與參數(shù)》,本文關(guān)鍵詞  探索,PowerShell,四,的,對象,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《探索PowerShell (四) PowerShell的對象、格式與參數(shù)》相關(guān)的同類信息!
  • 本頁收集關(guān)于探索PowerShell (四) PowerShell的對象、格式與參數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章