• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 505  文章 - 1034  trackbacks - 0
            <2008年9月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011


            子曾經(jīng)曰過:編程無他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(649)

            隨筆檔案(505)

            相冊

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 911556
            • 排名 - 14

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            重劍點(diǎn)評:這玩意兒有啥用呢?
                    遠(yuǎn)期目標(biāo):給版本制作組提供更方便更強(qiáng)大更自動化的腳本;
                    近期目標(biāo):耍酷!嘿嘿,用下這個: ipconfig | findstr "Address"

            Scripting with Windows PowerShell


            下面是例子的鏈接:

            Windows PowerShell Scripts

            Windows powershell script repository Windows PowerShell Script Repository

            Browse a repository of sample Windows PowerShell scripts.





            易學(xué)易用的Windows PowerShell

            Windows PowerShell 是微軟為 Windows 環(huán)境所開發(fā)的 shell 及腳本語言技術(shù),這項(xiàng)全新的技術(shù)提供了豐富的控制與自動化的系統(tǒng)管理能力;而“腳本語言”(scripting languages)則是用來編寫程序的計算機(jī)語言。腳本語言通常都有簡單、易學(xué)、易用的特性,目的就是希望能讓寫程序的人(開發(fā)者)快速完成程序的編寫 工作。本文將簡述腳本語言的起源與目的,并且介紹 Windows PowerShell。
            腳本語言的源起與目的

            腳本語言是計算機(jī)程序語言(programming languages)的一種,因此也能讓開發(fā)者藉以編寫出讓計算機(jī)聽命行事的程序。但是「以簡單的方式快速完成某些復(fù)雜的事情」通常是創(chuàng)造腳本語言的重要 原則,基于這項(xiàng)原則,使得腳本語言通常比 C、C++ 或 Java 之類的「系統(tǒng)程序語言」(system programming languages)「簡單」、「容易」,也讓腳本語言另有一些所謂「腳本語言的特性」: •

            語法和結(jié)構(gòu)通常比較簡單 •

            學(xué)習(xí)和使用通常比較簡單 •

            通常以容易修改程序的「直譯」作為執(zhí)行方式,而不需要編譯 •

            程序的開發(fā)產(chǎn)能優(yōu)于執(zhí)行效能

            腳本語言源自早期文字模式的命令列計算機(jī)系統(tǒng),在當(dāng)時只能以鍵盤敲入命令才能操作計算機(jī)的情況下,為了減少某些需要不斷重復(fù)敲入命令的情 況,計算機(jī)操作系統(tǒng)的命令處理器(在 UNIX 的世界這通常稱為 command shell)提供了「批次操作」(batch operation)的方式,讓計算機(jī)操作者可以將一整個流程的命令,循序、逐行的編排在稱為「批處理」(batch file,也稱為 batch jobs 或 shell scripts)的文字文件,若有相同的操作需要處理,即可加載批次檔而不需再次重復(fù)敲入指令。

            Shell Script

            由于批處理對命令列的計算機(jī)系統(tǒng)操作者幫助甚大,因此操作系統(tǒng)的命令處理器也不斷加強(qiáng)功能,尤其加入了許多程序語言的重要元素,包括變量、 循環(huán)、條件判斷等等,讓計算機(jī)操作不只是循序的執(zhí)行命令,而能更精確的操控計算機(jī)系統(tǒng)的運(yùn)作;這種程序設(shè)計通常稱為 shell programming。因此,不論是大型主機(jī)的系統(tǒng)操作員,或者是整個計算機(jī)環(huán)境的系統(tǒng)管理員、網(wǎng)絡(luò)管理員,shell programming 都是相當(dāng)重要的技能,這項(xiàng)技能可以有效且快速的管理轄下的計算機(jī)。

            UNIX 系統(tǒng)的 shell 相當(dāng)多樣,例如 Bourne Shell(sh)、Bourne-Again Shell(bash)、Korn Shell(ksh)、C Shell(csh)等等;以下簡述常見的 UNIXshell。 •

            Bourne Shell(sh):這是歷史悠久且重要的 UNIX shell,是由貝爾實(shí)驗(yàn)室的研究員 Stephen Bourne 為第七版的 UNIX 所創(chuàng)造,這種 shell 的執(zhí)行檔擴(kuò)展名就是 .sh。 •

            Bourne-Again Shell(bash):光從名稱就能猜出 bash 與 sh 是有淵源(甚至說「血緣」)。bash 是由 Brian Fox 于 1987 年為 GNU 所創(chuàng)造,1990 年起,Chet Ramey 成為主要的維護(hù)者。bash 是相當(dāng)流行的 shell,除了是大多數(shù) Linux 預(yù)設(shè)的 shell,在許多 UNIX-like 系統(tǒng)也有其蹤跡(例如 Mac OS X Tiger),甚至也能通過 Cygwin 在 Windows 系統(tǒng)執(zhí)行。

            Korn Shell(ksh):是由貝爾實(shí)驗(yàn)室的研究員 David Korn 在 80 年代初期所創(chuàng)造,ksh 除了與 sh 完全兼容,也包含了若干 C Shell 的功能。

            C Shell(csh):是由 Bill Joy(后來創(chuàng)辦了Sun公司)為 BSD UNIX 系統(tǒng)所創(chuàng)造。csh 源自于第六版 UNIX 的 Thompson shell(是 Bourne Shell 的前身),因?yàn)檎Z法類似 C 語言而得名。

            除了上述盛行于 UNIX 環(huán)境的 shell,其它操作系統(tǒng)也有專屬的 shell 或 shell 腳本語言,例如蘋果Mac系統(tǒng)的 AppleScript、IBM OS/2 的 REXX(REstructured eXtended eXecutor)。而 DOS 以及早期 Windows 的 shell 則是 Command.com,但也因功能較弱,因此有 4DOS、4NT 等軟件可增強(qiáng)功能,Windows 2000 以及之后的 Windows 則改以功能較強(qiáng) cmd.exe 作為 Windows shell,并且以 Windows Script Host 作為腳本語言執(zhí)行環(huán)境,大幅提高了 Windows shell 的可用性。而微軟也將會推出功能更強(qiáng)的 Windows shell,稱為 Windows PowerShell。

            雖然現(xiàn)在許多計算機(jī)系統(tǒng)都提供了圖形化的操作方式,但是卻都沒有因而停止提供文字模式的命令列操作方式,相反的,許多系統(tǒng)反而更加強(qiáng)這 部份的功能,例如 Windows 就不只加強(qiáng)了操作命令的功能和數(shù)量,也一直在改善 shell programming 的方式。而之所以要加強(qiáng)、改善,當(dāng)然是因?yàn)椴粔蚝茫籛indows 的圖形化操作方式對單一客戶端計算機(jī)的操作,已經(jīng)相當(dāng)方便,但如果是一群客戶端計算機(jī),或者是 24 小時運(yùn)作的服務(wù)器計算機(jī),圖形化操作方式有時會很不方便。

            宏語言

            宏語言也可視為腳本語言的分支,兩者也實(shí)質(zhì)上的相同之處。宏語言通常附屬于某一種軟件,例如微軟 Office、Visual Studio、Adobe Photoshop 都內(nèi)建了宏語言的功能,使用者可利用軟件所附的宏語言,達(dá)到自動化的結(jié)果(例如調(diào)整某個數(shù)據(jù)夾所有 PSD 圖文件的分辨率)。而這類宏語言也大多提供錄制宏的功能,自動記錄使用者的鍵盤按鍵,讓使用者不必寫程序,就能產(chǎn)生宏程序。此外,C 語言和匯編語言也有宏功能,是以搜尋及取代進(jìn)行編譯或組譯之前的前置處理。

            Windows PowerShell 誕生

            UNIX 的世界有功能強(qiáng)大的 shell,現(xiàn)在 Windows 環(huán)境也有了;Windows PowerShell 不僅提供功能相當(dāng)于BASH的命令列 shell,同時也內(nèi)建腳本語言以及輔助腳本程序的工具。Windows PowerShell 是以 .NET 技術(shù)為基礎(chǔ),并且與現(xiàn)有的 WSH 保持回溯兼容,因此 Windows PowerShell 的腳本程序不僅能存取 .NET CLR,也能使用現(xiàn)有的 COM 技術(shù)。

            Windows PowerShell 包含了數(shù)種系統(tǒng)管理工具、簡易且一致的語法,提升管理者處理常見如登錄數(shù)據(jù)庫、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等服務(wù)器軟件都將內(nèi)建 Windows PowerShell。

            Monad 是 Windows PowerShell 之前的項(xiàng)目代號,Microsoft Shell(MSH)則是另一個別名;簡而言之,Windows PowerShell 具有以下特點(diǎn):

            一致性的設(shè)計讓所有工具和系統(tǒng)數(shù)據(jù)的使用語法、命名原則都相同。

            Windows PowerShell 的腳本語言不僅簡單易學(xué),而且能支持現(xiàn)有的腳本程序和命令列工具。 •

            內(nèi)含 129 種稱為 cmdlet 的標(biāo)準(zhǔn)工具,可用來處理常見的系統(tǒng)管理工作,例如登錄數(shù)據(jù)庫、系統(tǒng)服務(wù)、形成、WMI、事件日志等等。 •

            具備完整的擴(kuò)充功能,獨(dú)立軟件商或開發(fā)者都能很容易的自行擴(kuò)充。

            下載、安裝、執(zhí)行 Windows PowerShell

            Windows PowerShell 可安裝于 Windows XP 以及之后的客戶端或服務(wù)器端 Windows 操作系統(tǒng),包括: •

            客戶端:Windows XP、Windows XP Service Pack 1、Windows XP Service Pack 2、Windows Vista •

            服務(wù)端:Windows Server 2003、Windows Server 2003 R2、Windows Server 2003 Service Pack 1

            而 Windows PowerShell 除了有 32 位版本,也還有 x64 和 ia64 等兩個 64 位版本,可以安裝在這兩種 64 位 Windows 平臺。此外,由于執(zhí)行 Windows PowerShell 需要 .NET Framework 2.0,因此請先替計算機(jī)安裝 .NET Framework 2.0。

            安裝之后,可以利用以下三種方式執(zhí)行 Windows PowerShell:

            位于『開始 / 所有程序』的『Windows PowerShell』快捷方式。

            在『開始 / 運(yùn)行』的『運(yùn)行』命令窗輸入 powershell。

            在任何『命令提示字符』窗口的命令提示符號輸入 powershell。

            Windows PowerShell 窗口看起來類似原本的『命令提示字符』窗口,而我通常也都會調(diào)整窗口和字型的大小,以方便作業(yè)。

            初探 Windows PowerShell

            任何 shell 都有列出目錄、文件的命令,Windows PowerShell 呢?先輸入 DOS 的 dir 試試吧!

            圖 1 dir 指令執(zhí)行結(jié)果
            圖 1 dir 指令執(zhí)行結(jié)果

            嗯!dir 果然也通,但是列示的方式不同于以往的 dir 指令。一時興起,我輸入了 UNIX 的 ls 指令,窗口顯示了與 dir 指令相同的結(jié)果;真有趣(這時候我尚未閱讀任何 Windows PowerShell 文件,只是很直覺輸入指令)。

            Windows PowerShell 指令

            cmdlet 是 Windows PowerShell 的指令,這相當(dāng)于 DOS 或其它 shell 的內(nèi)建指令(但是剛剛輸入的 dir 或 ls 并不是 cmdlet,這稍后將會說明),cmdlet 的發(fā)音方式是 command-let。cmdlet 名稱的格式都是以連字符號隔開的一對動詞和名詞,并且通常都是單數(shù)名詞。例如可以在線查詢 cmdlet 用法的 cmdlet 即為 get-help。cmdlet 名稱的動詞部分大致有 get、set、add、remove 等等(Windows PowerShell 的操作與 DOS 相同,輸入的字母都不分大小寫)。

            get-help 是頗為重要的 cmdlet,可以在線查詢所有的 Windows PowerShell 指令和說明文件。例如: •

            get-help *:列出所有的主題,包括指令和概念。

            get-help * | more:列出所有的主題,包括指令和概念,而且顯示滿整個窗口就暫停。

            get-help about*:列出所有的概念主題,例如萬元字符、foreach 循環(huán)。

            get-help get*:列出所有 get 開頭的主題。 •

            get-help {<指令名稱或主題名稱>}:列出指定的指令或主題的說明,例如 get-help dir 可以查詢 dir 指令的用法,而 get-help about_wildcard 可以查詢「萬用字符」這項(xiàng)主題的用法。

            此外,也可以用 help 取代 get-help,最大的好處是 help 顯示滿整個窗口,預(yù)設(shè)就會自動暫停。

            一開始曾經(jīng)使用了 dir 和 ls,雖然這并不是 cmdlet,但的確可用于 Windows PowerShell。原來這類的指令稱為 alias(化名),類似 cmdlet 的快捷方式,例如 dir 和 ls 實(shí)際上都是 get-ChildItem 的 alias,get-ChildItem 才是 cmdlet;而 get-ChildItem 的功能,是列出磁盤驅(qū)動器指定位置的子項(xiàng)目。

            Windows PowerShell 的指令包含了許多內(nèi)建的 alias,這些 alias 都是我們原本熟悉的 DOS 或 shell 指令,除了上述的 dir 和 ls,例如原本 DOS 指令的 rm、rmdir、rd、cls、copy 等,以及 BASH 的 cat、sleep、clear、cp 等,都是 Windows PowerShell 的 alias,也就是說,可以直接使用這些 alias;若要列出所有的 alias,可以用 get-alias 指令。除了使用內(nèi)建的 alias,Windows PowerShell 也允許使用者以 set-alias 建立自己的 alias。

            除了 cmdlet 和 alias,Windows PowerShell 的指令還有 Application 和 Function 兩種類型,前者指的是獨(dú)立的程序文件(在 DOS 時代稱為外部指令),后者是有名稱的程序代碼區(qū)塊,也就是函式:不論 Application 或 Function 都可以當(dāng)作 Windows PowerShell 指令來用,也可以用在腳本程序里。利用 get-command *,可以列出所有的指令。

            Windows PowerShell 的管線功能

            DOS 或 UNIX shell 都能利用「管線符號」(pipeline symbol),將指令的執(zhí)行結(jié)果移轉(zhuǎn)到另一個指令,讓另一個指令處理前一個指令轉(zhuǎn)來的數(shù)據(jù)。Windows PowerShell 的管線符號也是 |,例如之前用過的 get-help * | more,就是將 get-help * 的結(jié)果轉(zhuǎn)給 more,而 more 會讓結(jié)果顯示滿整個窗口就暫停。

            管線是各種 shell 環(huán)境的「黏合」最佳例證,例如管線就黏合了 Windows PowerShell 的各個指令,進(jìn)而讓各個指令完成一件工作。再舉幾個管線的例子。首先是:

            ipconfig | findstr "Address"

            被管線黏合的 ipconfig 和 findstr 都是 Win32 既有的外部指令,前者會顯示、設(shè)定計算機(jī)的 IP 地址,后者則能以各種方式找出特定字符串。以上的敘述是將 ipconfig 的執(zhí)行結(jié)果轉(zhuǎn)給 findstr,并讓 findstr 找出執(zhí)行結(jié)果的 Address 字符串。

            圖 2 ipconfig | findstr "address"執(zhí)行結(jié)果圖 2 ipconfig | findstr "Address"執(zhí)行結(jié)果

            再舉兩個例子。以下的敘述會列出已停止的系統(tǒng)服務(wù),但是由 get-service 和 where-object 相互協(xié)力完成,前者列出所有的系統(tǒng)服務(wù),后者過濾出狀態(tài)為 Stopped 的系統(tǒng)服務(wù):

            get-service | where-object {$_.Status -eq "Stopped"}

            但以上敘述的結(jié)果會以系統(tǒng)服務(wù)的名稱作為排列方式,若想以系統(tǒng)服務(wù)的「顯示名稱」依序排列,可以再加上 sort-object,并也以管線黏合:

            get-service | where-object {$_.Status -eq "Stopped"} | sort-object -property DisplayName

            圖 3 三重管線範(fàn)例的執(zhí)行結(jié)果
            圖 3 三重管線范例的執(zhí)行結(jié)果

            新的腳本語言

            微軟為 Windows PowerShell 創(chuàng)造了新的腳本語言,但若你熟悉任何一種腳本語言,你也能很快熟悉 Windows PowerShell 的腳本語言。基本上,只要將 Windows PowerShell 的指令放進(jìn)擴(kuò)展名為 .ps1 的文字文件,這個文件就是 Windows PowerShell 的腳本程序了。因此在熟悉了 Windows PowerShell 的命令操作之后,只要再熟悉 Windows PowerShell 腳本語言的變量、數(shù)組、循環(huán)控制、條件控制,大致上就語言的部分就差不多。但若要以腳本程序管理 Windows 系統(tǒng),除了要熟悉腳本語言,當(dāng)然也必須熟悉 Windows PowerShell 指令和 WMI,畢竟腳本語言的目的只是黏合這些現(xiàn)成的軟件組件。

            執(zhí)行腳本程序還有幾點(diǎn)注意事項(xiàng),首先要確定腳本程序所在的位置是在執(zhí)行路徑里。再者,由于 Windows PowerShell 顧慮到安全性,預(yù)設(shè)是禁止計算機(jī)系統(tǒng)執(zhí)行任何腳本程序,如果要解禁,必須利用 Set-ExecutionPolicy 指令。這個指令有三個參數(shù):

            set-executionpolicy allsigned:允許執(zhí)行具有信任簽章的腳本程序。 •

            set-executionpolicy remotesigned:僅允許執(zhí)行從遠(yuǎn)程下載且具有信任簽章的腳本程序。 •

            set-executionpolicy unrestricted:這是最寬松的條件,允許執(zhí)行任何腳本程序,不管有沒有信任簽章。但自己編寫的腳本程序通常都沒有信任簽章。

            善用腳本語言

            從近十年的程序語言發(fā)展趨勢,能明顯發(fā)現(xiàn)腳本語言的發(fā)展比系統(tǒng)程序語言更多樣、更活絡(luò),開發(fā)者的接受程度也高。當(dāng)然,這兩種類型的程序語 言,各有適用之處,沒有誰取代誰的問題,而是如何選擇適當(dāng)?shù)姆椒▉硗瓿晒ぷ鳌ohn K. Ousterhout(Tcl/Tk 的創(chuàng)造者)曾在 Scripting: Higher Level Programming for the 21st Century 一文提出他的看法,他認(rèn)為腳本語言的主要目的,是在「黏合」(glue)現(xiàn)有的軟件組件,而因?yàn)閳D形操作接口、因特網(wǎng)、組件應(yīng)用框架(component frameworks)的崛起,需要有更多、更好的腳本語言來黏合(因此腳本語言也稱為「黏合語言」(glue languages)或「系統(tǒng)整合語言」(system integration languages)。

            當(dāng)然,腳本語言本身能力的增進(jìn),以及計算機(jī)硬件的速度越來越快,也都是促進(jìn)腳本語言蓬勃發(fā)展的原因。由于腳本語言大多采用直譯的方式執(zhí)行,因此執(zhí)行效能會比利用編譯的系統(tǒng)程序語言慢。不過當(dāng)計算機(jī)硬件的速度越來越快,使用者就漸漸感覺不到腳本語言的速度較慢了。

            簡單、易學(xué)、易用的腳本語言尤其適合專責(zé)系統(tǒng)或網(wǎng)絡(luò)管理的 IT 人員,因?yàn)槟_本語言的起源就是為了便利系統(tǒng)操作,而且操作系統(tǒng)的供應(yīng)者也都會加強(qiáng)這部份的功能,提供更簡易的語法、更豐富的組件,讓 IT 人員更易于「黏合」各項(xiàng)功能,而組合出絕對適合自身需要的腳本程序。

            善用 Windows PowerShell

            Windows PowerShell 將 Windows 環(huán)境各自分離的腳本語言(WSH)和操作指令重新緊密黏合,并且讓 Windows 擁有與 UNIX 旗鼓相當(dāng)?shù)?shell 環(huán)境和腳本語言,在在都讓 Windows 更適用于大型、復(fù)雜、重要的計算機(jī)運(yùn)算環(huán)境。

            當(dāng)然 Windows PowerShell 的特色及優(yōu)點(diǎn)尚不只本文所提,但只要依照本文,讀者將能下載、安裝并親自嘗試 Windows PowerShell 的功能,尤其 Windows PowerShell 將登錄數(shù)據(jù)庫視為磁盤驅(qū)動器來存取,實(shí)在非常適當(dāng),也非常簡便,因?yàn)闄C(jī)碼、機(jī)碼值的結(jié)構(gòu),便如同目錄、檔案。在你下載、安裝 Windows PowerShell 的同時,也別忘了下載官方相關(guān)文件,里面有最新的 Windows PowerShell 官方文件。

            http://www.microsoft.com/taiwan/technet/columns/profwin/28-monad.mspx

            參考數(shù)據(jù)及網(wǎng)絡(luò)資源

            下載 Windows PowerShell:
            http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx

            TechNet Windows PowerShell Script Center:
            http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

            MSDN Windows PowerShell Blog:
            http://blogs.msdn.com/powershell/


            posted on 2007-09-16 22:52 七星重劍 閱讀(550) 評論(0)  編輯 收藏 引用 所屬分類: PL--WindowsShell
            久久久国产视频| 亚洲精品无码久久久| 国产AV影片久久久久久| 久久高潮一级毛片免费| 性欧美大战久久久久久久久 | 久久99精品久久久久久不卡| 香蕉99久久国产综合精品宅男自 | 久久噜噜久久久精品66| 色综合久久无码中文字幕| 国产午夜精品理论片久久| 久久久久人妻一区二区三区vr| 精品久久久久久无码中文字幕| 人妻少妇久久中文字幕一区二区 | 久久99精品久久久久久不卡| 亚洲∧v久久久无码精品| 日本国产精品久久| 久久精品国产亚洲网站| 色欲av伊人久久大香线蕉影院| 久久国产免费| 伊人色综合久久天天| 久久国产乱子伦免费精品| 久久久久久综合网天天| 久久久精品久久久久特色影视| 久久国产成人精品麻豆| 少妇高潮惨叫久久久久久| 久久久久久久97| 亚洲欧洲久久av| 久久久久久亚洲精品影院| 亚洲国产一成久久精品国产成人综合 | 丰满少妇人妻久久久久久4| 久久国产免费观看精品3| 婷婷久久久亚洲欧洲日产国码AV| 热久久最新网站获取| 国产免费久久精品99re丫y| 免费一级欧美大片久久网 | 人妻无码αv中文字幕久久| 久久亚洲AV成人无码| 欧美国产成人久久精品| 亚洲国产精品无码成人片久久| 亚洲欧美成人综合久久久| 中文字幕久久精品无码|