PowerShell（包括 Windows PowerShell 和 PowerShell Core）是微軟公司開發的任務自動化和組態管理架構，由在NET Framework 和後來的NET 上構建的命令列介面殼層相關指令碼語言組成，最初僅僅是 Windows 元件，後於 2016 年 8 月 18 日開源並提供跨平臺支援。 在 PowerShell 中，管理任務通常由 cmdlets（發音為 commandlets）執行，這是執行特定操作的專用NET 類。可以將 cmdlet 集合至指令碼、可執行檔案（一般是獨立應用程式）中，或透過常規NET 類（或 WMI COM 物件）例項化。 源起與目的 UNIX 系統一直有著功能強大的殼程式（shell），Windows PowerShell 的誕生就是要提供功能相當於 UNIX 系統的命令列殼程式（例如：sh、或 csh），同時也內建指令碼語言以及輔助指令碼程式的工具。 程式特性 一致性的設計讓所有工具和系統資料的使用語法、命名原則都相同。 指令碼語言簡單易學，而且能支援現有的指令碼程式和命令列工具。 內含 129 種稱為 cmdlet 的標準工具，可用來處理常見的系統管理工作。 具備完整的擴充功能，獨立軟體商或開發者都能很容易的自行擴充。 程序間資料傳遞內容具有強型別特徵。 PowerShell Core 可以自動檢測字元編碼，自動識別 Linux 和 Windows 下的換行符，跨平臺執行。 cmdlet 是 Windows PowerShell 的指令，發音唸法為 commandlet。這相當於 DOS 或其他殼程式的內建指令，指令名稱的格式都是以連字號隔開的一對動詞和名詞，並且通常都是單數名詞；例如線上查詢說明的 cmdlet 指令為 gethelp，名稱的動詞部分大致有 get、set、add、remove 等等（字母都不分大小寫）。 Windows PowerShell ISE 是 Windows PowerShell 的主機應用程式。在此程式中，可以在單個 Windows GUI 中執行命令、編輯與測試指令碼。此程式具有多行編輯、Tab 補齊、上下文相關幫助、語法著色、選擇性執行等功能，而且還支援從右到左的書寫順序等功能。 技術基礎 Windows PowerShell 是以NET Framework 技術為基礎，並且與現有的保持回溯相容，因此它的指令碼程式不僅能存取NET CLR，也能使用現有的技術。同時也包含了數種系統管理工具、簡易且一致的語法，常見如登入資料庫、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等伺服器軟體都將內建 Windows PowerShell。 範例 停止所有目前執行中的以 p 字元開頭命名的程式： getprocess p stopprocess 停止所有目前執行中的所有使用大於 1000MB 記憶體的程式： getprocess where _WS gt 1000MB stopprocess 計算一個目錄下檔案內的位元組大小： getchilditem measureobject property length sum 將 hello world 字串轉為英文大寫字元，成為 HELLO WORLD： hello worldToUpper 訂閱一個指定的 RSS Feed 並顯示它最近 8 個主題： rssUrl httpblogsmsdncompowershellrssaspx blog xmlnewobject SystemNetWebClientDownloadString rssUrl blogrsschannelitem select title first 8 命令提示字元比較 PowerShell 命令列與其他命令列直譯器的內部和外部命令的比較 PowerShell（命令列） PowerShell（別名） 命令提示符 Unix shell 描述 GetChildItem gci dir ls dir ls 列出目前或指定資料夾中的所有檔案和資料夾 TestConnection ping ping ping 從目前電腦向指定電腦傳送 Ping，或指示另一臺電腦這樣做 GetContent gc type cat cat 取得檔案內容 GetCommand gcm 列出可用的命令 GetHelp help man man 在控制檯上列印命令的文件 ClearHost cls clear cls clear 清除螢幕 CopyItem cpi copy cp copy cp 將檔案和資料夾複製到另一個位置 MoveItem mi move mv mv 將檔案和資料夾移動到新位置 RemoveItem ri del erase rmdir rd rm rmdir rd rm rmdir 刪除檔案或資料夾 RenameItem rni ren mv rename mv 重新命名單個檔案、資料夾、硬連結或符號連結 GetLocation gl cd pwd cd pwd 顯示工作路徑（目前資料夾） PopLocation popd popd popd 將工作路徑更改為最近推送到堆疊上的位置 PushLocation pushd pushd pushd 將工作路徑儲存到堆疊中 SetLocation sl cd chdir cd chdir cd 改變工作路徑 TeeObject tee tee 將輸入管道傳輸到檔案或變數，並沿管道傳遞輸入 WriteOutput echo write echo echo 將字串或其他對像列印到標準串流 GetProcess gps ps tlist ps 列出所有正在執行的處理程序 StopProcess spps kill kill taskkill kill 停止正在執行的處理程序 SelectString sls findstr find grep 列印與模式匹配的 zhtw 列；zhcn 行； SetVariable sv set env export set setenv 建立或更改環境變數的內容 InvokeWebRequest iwr curl wget curl wget curl 取得網際網路上的網頁內容 Windows PowerShell 30 PowerShell 30 與 Windows 8 和 Windows Server 2012 整合。微軟還為 Windows 7 的 Service Pack 1、Windows Server 2008 的 Service Pack 1 和 Windows Server 2008 R2 的 Service Pack 1 提供了 PowerShell 30。 PowerShell 30 是一個更大的軟體包 Windows Management Framework 30 WMF3 WMF3 的一部分。 PowerShell 30 是一個更大的軟體包 Windows 管理框架 30 WMF3 的一部分，其中還包含支援遠端協作的 WinRM 服務。 PowerShell 30 的新功能包括： 計劃任務：可使用 Windows 任務排程程式基礎架構計劃任務在預定的時間和日期執行。 會話重新連線：會話可以斷開並重新連線。遠端會話現在能更好地應對臨時網路故障。 改進了程式碼編寫：增加了程式碼自動完成（IntelliSense）和程式碼片段。PowerShell ISE 允許使用者使用對話方塊填寫 PowerShell cmdlet 引數。 授權支援：可將管理任務授權給無權執行此類任務的使用者，而無需授予他們永久性的額外許可權。 更新幫助：可使用 UpdateHelp 命令更新幫助文件。 參考文獻 擴充套件閱讀 外部連結 微軟官網 如何使用 PowerShell 檔案 PowerShell Microsoft Docs GitHub PowerShellPowerShell PowerShell for every system 易學易用的 Windows PowerShell MSDN 影片教程 其他 維基：Windows PowerShell Survival Guide CategoryNET 程式語言 Category 動態程式語言 Category 直譯器 CategoryWindows 管理 Category 面向物件的程式語言 Category 程序式程式設計語言 Category 指令碼語言 Category 面向文字程式語言 Category 命令殼層 Category2006 年建立的程式語言