• <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


            子曾經曰過:編程無他,唯手熟爾!

            常用鏈接

            留言簿(94)

            隨筆分類(649)

            隨筆檔案(505)

            相冊

            BCB

            Crytek

            • crymod
            • Crytek's Offical Modding Portal

            Game Industry

            OGRE

            other

            Programmers

            Qt

            WOW Stuff

            搜索

            •  

            積分與排名

            • 積分 - 911663
            • 排名 - 14

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            重劍點評:這玩意兒有啥用呢?
                    遠期目標:給版本制作組提供更方便更強大更自動化的腳本;
                    近期目標:耍酷!嘿嘿,用下這個: 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.





            易學易用的Windows PowerShell

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

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

            語法和結構通常比較簡單 •

            學習和使用通常比較簡單 •

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

            程序的開發產能優于執行效能

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

            Shell Script

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

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

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

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

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

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

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

            雖然現在許多計算機系統都提供了圖形化的操作方式,但是卻都沒有因而停止提供文字模式的命令列操作方式,相反的,許多系統反而更加強這 部份的功能,例如 Windows 就不只加強了操作命令的功能和數量,也一直在改善 shell programming 的方式。而之所以要加強、改善,當然是因為不夠好;Windows 的圖形化操作方式對單一客戶端計算機的操作,已經相當方便,但如果是一群客戶端計算機,或者是 24 小時運作的服務器計算機,圖形化操作方式有時會很不方便。

            宏語言

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

            Windows PowerShell 誕生

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

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

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

            一致性的設計讓所有工具和系統數據的使用語法、命名原則都相同。

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

            內含 129 種稱為 cmdlet 的標準工具,可用來處理常見的系統管理工作,例如登錄數據庫、系統服務、形成、WMI、事件日志等等。 •

            具備完整的擴充功能,獨立軟件商或開發者都能很容易的自行擴充。

            下載、安裝、執行 Windows PowerShell

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

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

            服務端:Windows Server 2003、Windows Server 2003 R2、Windows Server 2003 Service Pack 1

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

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

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

            在『開始 / 運行』的『運行』命令窗輸入 powershell。

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

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

            初探 Windows PowerShell

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

            圖 1 dir 指令執行結果
            圖 1 dir 指令執行結果

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

            Windows PowerShell 指令

            cmdlet 是 Windows PowerShell 的指令,這相當于 DOS 或其它 shell 的內建指令(但是剛剛輸入的 dir 或 ls 并不是 cmdlet,這稍后將會說明),cmdlet 的發音方式是 command-let。cmdlet 名稱的格式都是以連字符號隔開的一對動詞和名詞,并且通常都是單數名詞。例如可以在線查詢 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 循環。

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

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

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

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

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

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

            Windows PowerShell 的管線功能

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

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

            ipconfig | findstr "Address"

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

            圖 2 ipconfig | findstr "address"執行結果圖 2 ipconfig | findstr "Address"執行結果

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

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

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

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

            圖 3 三重管線範例的執行結果
            圖 3 三重管線范例的執行結果

            新的腳本語言

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

            執行腳本程序還有幾點注意事項,首先要確定腳本程序所在的位置是在執行路徑里。再者,由于 Windows PowerShell 顧慮到安全性,預設是禁止計算機系統執行任何腳本程序,如果要解禁,必須利用 Set-ExecutionPolicy 指令。這個指令有三個參數:

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

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

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

            善用腳本語言

            從近十年的程序語言發展趨勢,能明顯發現腳本語言的發展比系統程序語言更多樣、更活絡,開發者的接受程度也高。當然,這兩種類型的程序語 言,各有適用之處,沒有誰取代誰的問題,而是如何選擇適當的方法來完成工作。John K. Ousterhout(Tcl/Tk 的創造者)曾在 Scripting: Higher Level Programming for the 21st Century 一文提出他的看法,他認為腳本語言的主要目的,是在「黏合」(glue)現有的軟件組件,而因為圖形操作接口、因特網、組件應用框架(component frameworks)的崛起,需要有更多、更好的腳本語言來黏合(因此腳本語言也稱為「黏合語言」(glue languages)或「系統整合語言」(system integration languages)。

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

            簡單、易學、易用的腳本語言尤其適合專責系統或網絡管理的 IT 人員,因為腳本語言的起源就是為了便利系統操作,而且操作系統的供應者也都會加強這部份的功能,提供更簡易的語法、更豐富的組件,讓 IT 人員更易于「黏合」各項功能,而組合出絕對適合自身需要的腳本程序。

            善用 Windows PowerShell

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

            當然 Windows PowerShell 的特色及優點尚不只本文所提,但只要依照本文,讀者將能下載、安裝并親自嘗試 Windows PowerShell 的功能,尤其 Windows PowerShell 將登錄數據庫視為磁盤驅動器來存取,實在非常適當,也非常簡便,因為機碼、機碼值的結構,便如同目錄、檔案。在你下載、安裝 Windows PowerShell 的同時,也別忘了下載官方相關文件,里面有最新的 Windows PowerShell 官方文件。

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

            參考數據及網絡資源

            下載 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
            2019久久久高清456| 久久亚洲国产成人影院网站| 亚洲色婷婷综合久久| 婷婷综合久久中文字幕蜜桃三电影| 伊人久久综合无码成人网| 少妇高潮惨叫久久久久久| 久久99精品国产一区二区三区| 欧美亚洲国产精品久久蜜芽| 亚洲欧洲精品成人久久曰影片| 少妇内射兰兰久久| 久久久艹| 婷婷久久香蕉五月综合加勒比| 国产免费久久久久久无码| 久久精品国产99久久久古代| 青草影院天堂男人久久| 综合网日日天干夜夜久久| 精品欧美一区二区三区久久久| 久久久久精品国产亚洲AV无码| 亚洲国产精品久久久久婷婷软件| 亚洲精品成人网久久久久久| 久久99毛片免费观看不卡| 亚洲中文字幕无码久久2020| 久久精品国产黑森林| 美女写真久久影院| 狠狠干狠狠久久| 欧美黑人激情性久久| 亚洲欧美一级久久精品| 久久91精品综合国产首页| 狠狠干狠狠久久| 久久99免费视频| .精品久久久麻豆国产精品| 亚洲av伊人久久综合密臀性色| 久久91精品国产91| 热综合一本伊人久久精品| 日本精品一区二区久久久| 国内精品久久久久久久coent| 久久99国产精品久久| 久久久精品午夜免费不卡| 久久亚洲欧美日本精品| 久久久噜噜噜www成人网| 久久精品中文騷妇女内射|