Windows PowerShell
Screenshot of a sample PowerShell session
|
|
| 開發者 | 微軟公司 |
|---|---|
| 初始版本 | 2006年11月14日 |
| 穩定版本 | 4.0(2013年10月17日) |
| 開發狀態 | 活躍 |
| 操作系统 | Windows XP Windows Server 2003 Windows Vista Windows Server 2008 Windows 7 Windows Server 2008 R2 Windows 8 Windows Server 2012 |
| 平台 | x86, x86-64, Itanium |
| 语言 | 多語言 |
| 类型 | 作業系統殼層 |
| 许可协议 | MS-EULA |
| 網站 | Windows PowerShell |
| 编程范型 | 多重編程範式:指令式編程, Pipeline programming, 物件導向程式設計,函數程式語言,反射 |
|---|---|
| 发行时间 | 2006年 |
| 設計者 | Jeffrey Snover, Bruce Payette(et al.) |
| 實作者 | 微軟公司 |
| 型態系統 | 強,安全,推論,動態 |
| 主要實作產品 | Windows PowerShell, Pash[1] |
| 啟發語言 | C#, DCL, ksh, Perl, Ruby/LISP, CL, SQL, COMMAND.COM/ cmd.exe,[2] Tcl[3] |
| 作業系統 | Cross-platform[1] |
Windows PowerShell是微軟公司為Windows環境所開發的殼程式(shell)及腳本語言技術,採用的是命令行界面。這項全新的技術提供了豐富的控制與自動化的系統管理能力。
之前的專案代號是Monad,程式另一個名稱叫Microsoft Shell(MSH)。
源起與目的[编辑]
UNIX系統一直有著功能強大的殼程式(shell),Windows PowerShell的誕生就是要提供功能相當於UNIX系統的命令列殼程式(例如:sh、bash或csh),同時也內建腳本語言以及輔助腳本程式的工具。
程式特性[编辑]
- 一致性的設計讓所有工具和系統資料的使用語法、命名原則都相同。
- 腳本語言簡單易學,而且能支援現有的腳本程式和命令列工具。
- 內含129種稱為cmdlet的標準工具,可用來處理常見的系統管理工作。
- 具備完整的擴充功能,獨立軟體商或開發者都能很容易的自行擴充。
- 进程间数据传递内容具有强类型特征。
cmdlet是Windows PowerShell的指令,發音唸法為command-let。這相當於DOS或其他殼程式的內建指令,指令名稱的格式都是以連字號(-)隔開的一對動詞和名詞,並且通常都是單數名詞;例如線上查詢說明的cmdlet指令為get-help,名稱的動詞部分大致有get、set、add、remove等等(字母都不分大小寫)。
Windows PowerShell ISE是Windows PowerShell的主机应用程序。在此程序中,可以在单个Windows GUI中运行命令、编辑与测试脚本。此程序具有多行编辑、Tab 补齐、上下文相关帮助、语法着色、选择性执行等功能,而且还支持从右到左的书写顺序等功能。
技術基礎[编辑]
Windows PowerShell是以.NET Framework技術為基礎,並且與現有的WSH保持回溯相容,因此它的腳本程式不僅能存取.NET CLR,也能使用現有的COM技術。同時也包含了數種系統管理工具、簡易且一致的語法,提升管理者處理,常見如登錄資料庫、WMI。Exchange Server 2007以及System Center Operations Manager 2007等伺服器軟體都將內建Windows PowerShell。
範例[编辑]
- 获取所有命令[4]:
PS> Get-Command
- 查看Get-Command命令的用法[5]:
PS> Get-Help Get-Command
- 停止所有目前執行中的以"p"字元開頭命名的程式:
PS> get-process p* | stop-process
- 停止所有目前執行中的所有使用大於1000MB記憶體的程式:
PS> get-process | where { $_.WS -gt 1000MB } | stop-process
- 計算一個目錄下檔案內的位元組大小:
PS> get-childitem | measure-object -property length -sum
- 等待一個叫做"notepad"的程式執行結束:
PS> $processToWatch = get-process notepad PS> $processToWatch.WaitForExit()
- 將"hello, world!"字串轉為英文大寫字元,成為"HELLO, WORLD!":
PS> "hello, world!".ToUpper()
- 在字串"string"的第1個字元後插入字串"ABC",成為"sABCtring":
PS> "string".Insert(1, "ABC")
- 訂閱一個指定的RSS Feed並顯示它最近8個主題:
PS> $rssUrl = "http://blogs.msdn.com/powershell/rss.aspx" PS> $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl) PS> $blog.rss.channel.item | select title -first 8
- 把"$UserProfile"設定成數值"UserProfile"的環境變數:
PS> $UserProfile = $env:UserProfile
參考文獻[编辑]
- ^ 1.0 1.1 igor.moochnick - Pash
- ^ Jsnover @ Wikipedia: Generational list of programming languages
- ^ Windows PowerShell : PowerShell and WPF: WTF
- ^ Get-Command. Microsoft TechNet. 2012-08-15 [2013-07-19].
- ^ Get-Help. Microsoft TechNet. 2012-10-30 [2013-07-19].
外部連結[编辑]
- 微软官网
- Windows PowerShell:PowerShell简介
- Windows PowerShell 3.0 Core Modules:PowerShell 3.0核心模块及模块中的命令用法
- Windows PowerShell Reference
- 使用 Windows PowerShell 撰寫指令碼
- 易學易用的Windows PowerShell
- 其他
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||