PowerShell基礎(chǔ)知識之一_第1頁
PowerShell基礎(chǔ)知識之一_第2頁
PowerShell基礎(chǔ)知識之一_第3頁
PowerShell基礎(chǔ)知識之一_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PowerShell基礎(chǔ)知識之一 本Blog所發(fā)表的所有原創(chuàng)文章, 未經(jīng)許可, 禁止以任何形式進(jìn)行轉(zhuǎn)載. 作者: Edengundam(馬濤)如果要學(xué)一門語言, 你就必須對語言的語法, 特性有所了解. 只要對語言的各個(gè)環(huán)境了解, 才能更好編寫, 調(diào)式, 部署你的程序. 因此, 教程第二部分將會(huì)著重于如下幾個(gè)方面:1. PowerShell, Shell, 腳本語言等概念;2. 參數(shù)綁定;3. 類型轉(zhuǎn)換.這些基礎(chǔ)知識, 希望大家不要輕視, 因?yàn)楹竺娴慕坛虒?huì)直接引用這些概念. 首先, 我們先來調(diào)查PowerShell中最重要的元素: 命令(Command). 在PowerShell中, 命令分為

2、四類: cmdlet, function, script和native Windows commands. 可能看到這四個(gè)英文名稱會(huì)有些頭大, 我們來仔細(xì)了解一下.1. cmdlet在PowerShell官方blog上, 有篇關(guān)于Cmdlets和API的介紹. 因?yàn)镻owerShell建立在.Net上, 再加上COM, WMI, ADO, XML等技術(shù). 使得PowerShell對于.Net應(yīng)用開發(fā)人員, 服務(wù)器管理人員來說都會(huì)非常方便, 通過這些已有的接口, 即可完成大量的任務(wù). 但是, PowerShell的設(shè)計(jì)者明確的指出Cmdlets是PowerShell的靈魂. Cmdlet是Com

3、mand-Let的縮寫. cmdlet這類命令有一種統(tǒng)一的命名方法: Verb-Noun, 也就是 動(dòng)詞-名詞. 如果你是一名.Net程序員, 那么編程規(guī)范中應(yīng)該也會(huì)提出, 對于方法(method)的命名, 最好使用動(dòng)詞-名詞形式配合駱駝(Camel)命名法. 查看有哪些cmdlet參考如下:PS C: get-command -CommandType cmdletCommandType Name Definition- - -Cmdlet Add-Content Add-Content -Path -Value Object.Cmdlet Add-History Add-History -I

4、nputObject -Pass.Cmdlet Add-Member Add-Member -MemberType -Name.Cmdlet Add-PSSnapin Add-PSSnapin -Name -PassThru -Ve.Cmdlet Clear-Content Clear-Content -Path -Filter Strin.Cmdlet Clear-Item Clear-Item -Path -Force -Filter .Cmdlet Clear-ItemProperty Clear-ItemProperty -Path -Name (get-command -Comman

5、dType cmdlet).count129129確實(shí)有點(diǎn)多, 但是實(shí)際上在學(xué)習(xí)過程中你會(huì)發(fā)現(xiàn)學(xué)習(xí)他們的過程比你學(xué)習(xí)unix shell中命令更加容易些, 原因稍后為你解答. cmdlet是可以進(jìn)行擴(kuò)展的, 如果你想開發(fā)自己的cmdlet, 你需要下載PowerShell SDK. 目前, 我只知道該 SDK 包含在了Windows Vista Platform SDK中. 下載該 SDK, 需要進(jìn)行正版驗(yàn)證. 在伴隨著教程的編寫過程, 我也會(huì)閱讀PowerShell SDK中關(guān)于PowerShell的介紹, 并盡量用最簡單的語言將需要注意的內(nèi)容, 傳達(dá)給大家. cmdlet的開發(fā)并不復(fù)雜,

6、可以使用C#作為實(shí)現(xiàn)語言, PowerShell SDK已經(jīng)實(shí)現(xiàn)了好了cmdlet的一個(gè)基類, 開發(fā)的cmdlet只需要繼承該基類. 通過這種開發(fā)模式, 最大的優(yōu)點(diǎn): (1). 所有的cmdlet中包含了一些公共參數(shù)(common parameters), 例如: -Verbose, -Debug, -ErrorAction, -ErrorVariable, and -OutVariable. 這些參數(shù)大多用于一些腳本調(diào)試等. (2). 所有的cmdlet中的參數(shù)(parameters)具有相似的參數(shù), 相同的類型, 甚至具有相同的性質(zhì). 對于接受輸入的某些cmdlet來說, 輸入的參數(shù)就叫做

7、-InputObject, 參數(shù)類型一般是object, 而通常都會(huì)具有從管道線讀取處理對象的屬性.這種一致性帶來的最大好處就是, 對于一個(gè)命令, 往往你只需要關(guān)注命令的特性, 不需要記住復(fù)雜繁多的參數(shù). 如果你熟悉unix shell下的utils coretools那么我相信, 例如awk使用-F指定一個(gè)支持正則表達(dá)式的與分隔符, cut使用-d來分割, sort使用-t進(jìn)行分割對你來說是痛苦的. 在PowerShell中, 你甚至不需要對cmdlet產(chǎn)生的輸出進(jìn)行分割. 這點(diǎn)你會(huì)在稍后看到.cmdlet編譯后的結(jié)果不是可執(zhí)行文件, 而是dll文件, PowerShell啟動(dòng)時(shí), 將這些命

8、令加載, 這些命令執(zhí)行效率最高, 因?yàn)樗麄冊赑owerShell時(shí)被載入PowerShell進(jìn)程內(nèi).2. 函數(shù)(function)函數(shù), 準(zhǔn)確的說就是: 有名稱的代碼塊(scriptblock). 下面就是一個(gè)簡單的函數(shù)定義:PS C: function Get-DayToBeiJingOlympic (datetime 2008-08-08 - datetime:Now).Days; PS C: Get-DayToBeiJingOlympic370細(xì)節(jié)大家可以不用關(guān)心, 稍后都會(huì)講到. 函數(shù)就是一段你輸入到PowerShell的命令集合.但是函數(shù)在被定義后, 才存在于PowerShell內(nèi)存

9、中, 當(dāng)PowerShell退出時(shí), 就會(huì)消失.效率上, 函數(shù)在第一次調(diào)用時(shí)需要編譯, 因此第一次調(diào)用速度較慢. 3. 腳本(script)PowerShell在交互式Shell(interactive Shell)和腳本語言(script Language)之間進(jìn)行了平衡, 提供了執(zhí)行腳本的能力. 腳本類似于函數(shù), 存放在文件中, 調(diào)用時(shí)由PowerShell載入內(nèi)存, 編譯并執(zhí)行. 效率上來講, 腳本慢于函數(shù)(function), 主要原因在于函數(shù)只會(huì)在第一次調(diào)用時(shí)被編譯, 而腳本每次調(diào)用都會(huì)被編譯一次. 但是編譯后的執(zhí)行階段, 他們的性能是近似相等的.4. native Windows

10、command我不知道應(yīng)該這個(gè)東西用什么名字. 這類命令在Windows世界大量存在, 譬如: dir, findstr, del, ping. 這些命令就是Windows之前的可執(zhí)行文件(非.Net命令行可執(zhí)行文件). 在PowerShell中調(diào)用這些命令效率是最低的, 因?yàn)閳?zhí)行他們PowerShell需要?jiǎng)?chuàng)建一個(gè)新進(jìn)程. 此外因?yàn)檫@些命令早于PowerShell, 因此他們的信息輸出都是基于文本的(也可以說是字符串), 因此喪失了PowerShell對對象的處理能力. 因此, 如果你知道PowerShell的實(shí)現(xiàn), 就避免使用這些命令. 討論完命令, 我簡單介紹下別名(alias):PS

11、C: (Get-Command -CommandType alias).count101你一定在想, PowerShell為什么提供了這么多別名, 難道要累死我們?PowerShell為了方便使用windows和unix, linux的人們, 支持了兩套別名, 譬如dir相對于ls, 還有unix, linux的grep等. 這樣無論你使用windows還是linux都能相對來說快速的上手PowerShell. PowerShell Version 1.0中有一個(gè)缺陷, 既定義別名時(shí), 不允許指定參數(shù). 這無疑是PowerShell的一個(gè)缺陷. 但是因?yàn)閏mdlet中參數(shù)較少(一般都是10個(gè)以

12、內(nèi)), 因此大多數(shù)時(shí)候, 你不需要定義帶有參數(shù)的別名, 如果真的需要, 可以用函數(shù)來替代. 這種缺陷, 與代碼塊的執(zhí)行等功能有沖突. 希望在后續(xù)版本能有別名功能能夠更加強(qiáng)大.Windows PowerShell 是微軟公司為 Windows 環(huán)境所開發(fā)的殼程式(shell)及腳本語言技術(shù),採用的是命令行界面。這項(xiàng)全新的技術(shù)提供了豐富的控制與自動(dòng)化的系統(tǒng)管理能力。之前的專桉代號是 Monad,程式另一個(gè)名稱叫 Microsoft Shell(MSHWindows系統(tǒng)下的PowerShell 即開發(fā)代號為Monad的命令行外殼和腳本系統(tǒng)管理工具 回答者: Michael - 大魔法師 六級 200

13、8-7-6 10:23 即開發(fā)代號為Monad的命令行外殼和腳本系統(tǒng)管理工具。 PowerShell是微軟公司于2006年第四季度正式發(fā)布的. 它的出現(xiàn)標(biāo)志著, 微軟公司向服務(wù)器領(lǐng)域邁出了重要的一步, 拉近了與Unix, Linux等操作系統(tǒng)的距離. PowerShell的前身命名為Monad, 在2006年4月25日正式發(fā)布beta版時(shí)更名為PowerShell. PowerShell是一款基于對象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0. 能夠運(yùn)行在Windows XP SP2, Windows Vista, Windows 2003操作系統(tǒng)上. 能夠同時(shí)支持WMI, COM, ADO.NET, ADSI等已有的Windows

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論