PowerShell
Template:Expand English Template:NoteTA 腳本錯誤:沒有「Infobox」這個模塊。腳本錯誤:沒有「Check for unknown parameters」這個模塊。
PowerShell(包括Windows PowerShell和PowerShell Core)是微軟公司開發的任務自動化和組態管理架構,由在.NET Framework和後來的.NET上構建的命令行界面殼層相關腳本語言組成,最初僅僅是Windows元件,後於2016年8月18日開源並提供跨平台支持。[1]
在PowerShell中,管理任務通常由cmdlets(發音為command-lets)執行,這是執行特定操作的專用.NET類。可以將cmdlet集合至腳本、可執行文件(一般是獨立應用程式)中,或通過常規.NET類(或WMI / COM對象)實例化。[2][3]
源起與目的[編輯]
UNIX系統一直有著功能強大的殼程式(shell),Windows PowerShell的誕生就是要提供功能相當於UNIX系統的命令列殼程式(例如:sh、Template:Tsl或csh),同時也內建腳本語言以及輔助腳本程式的工具。
程式特性[編輯]
- 一致性的設計讓所有工具和系統資料的使用語法、命名原則都相同。
- 腳本語言簡單易學,而且能支援現有的腳本程式和命令列工具。
- 內含129種稱為cmdlet的標準工具,可用來處理常見的系統管理工作。
- 具備完整的擴充功能,獨立軟體商或開發者都能很容易的自行擴充。
- 進程間數據傳遞內容具有強類型特徵。
- PowerShell Core可以自動檢測字符編碼,自動識別Linux和Windows下的換行符,跨平台運行。
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技術為基礎,並且與現有的Template:Tsl保持回溯相容,因此它的腳本程式不僅能存取.NET CLR,也能使用現有的Template:Tsl技術。同時也包含了數種系統管理工具、簡易且一致的語法,常見如登錄資料庫、WMI。Exchange Server 2007以及System Center Operations Manager 2007等伺服器軟體都將內建Windows PowerShell。
範例[編輯]
- 停止所有目前執行中的以"p"字元開頭命名的程式:
get-process p* | stop-process
- 停止所有目前執行中的所有使用大於1000MB記憶體的程式:
get-process | where { $_.WS -gt 1000MB } | stop-process
- 計算一個目錄下檔案內的位元組大小:
get-childitem | measure-object -property length -sum
- 將"hello, world!"字串轉為英文大寫字元,成為"HELLO, WORLD!":
"hello, world!".ToUpper()
- 訂閱一個指定的RSS Feed並顯示它最近8個主題:
$rssUrl = "http://blogs.msdn.com/powershell/rss.aspx"
$blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl)
$blog.rss.channel.item | select title -first 8
命令提示字元比較[編輯]
| PowerShell(命令行) | PowerShell(別名) | 命令提示符 | Unix shell | 描述 |
|---|---|---|---|---|
| Get-ChildItem | gci, dir, ls | dir | ls | 列出目前或指定資料夾中的所有檔案和資料夾 |
| Test-ConnectionTemplate:Efn | ping | ping | ping | 從目前電腦向指定電腦傳送Ping,或指示另一台電腦這樣做 |
| Get-Content | gc, type, cat | Template:Tsl | cat | 取得檔案內容 |
| Get-Command | gcm | Template:Tsl | Template:Tsl, Template:Tsl, Template:Le | 列出可用的命令 |
| Get-Help | help, man | Template:Tsl | Template:Tsl, man | 在控制台上列印命令的文檔 |
| Clear-Host | cls, clear | cls | clear | 清除屏幕Template:Efn |
| Copy-Item | cpi, copy, cp | copy, Template:Tsl, robocopy | cp | 將檔案和資料夾複製到另一個位置 |
| Move-Item | mi, move, mv | Template:Tsl | mv | 將檔案和資料夾移動到新位置 |
| Remove-Item | ri, del, erase, rmdir, rd, rm | Template:Tsl, Template:Tsl, rmdir, rd | rm, rmdir | 刪除檔案或資料夾 |
| Rename-Item | rni, ren, mv | Template:Tsl, rename | mv | 重命名單個檔案、資料夾、硬連結或符號連結 |
| Get-Location | gl, cd, pwd | cd | pwd | 顯示工作路徑(目前資料夾) |
| Pop-Location | popd | popd | popd | 將工作路徑更改為最近推送到堆疊上的位置 |
| Push-Location | pushd | pushd | pushd | 將工作路徑儲存到堆疊中 |
| Set-Location | sl, cd, chdir | cd, chdir | cd | 改變工作路徑 |
| Tee-Object | tee | 不適用 | tee | 將輸入管道傳輸到檔案或變數,並沿管道傳遞輸入 |
| Write-Output | echo, write | echo | echo | 將字符串或其他對像列印到標準串流 |
| Get-Process | gps, ps | tlist,Template:Efn Template:TslTemplate:Efn | ps | 列出所有正在執行的處理程序 |
| Stop-Process | spps, kill | kill,Template:Efn taskkillTemplate:Efn | killTemplate:Efn | 停止正在執行的處理程序 |
| Select-String | sls | findstr | find, grep | 列印與模式匹配的列 |
| Set-Variable | sv, set | Template:Tsl | env, export, set, setenv | 創建或更改環境變量的內容 |
| Invoke-WebRequest | iwr, |
curl | wget, curl | 取得網際網路上的網頁內容 |
Windows PowerShell 3.0[編輯]
PowerShell 3.0 與 Windows 8 和 Windows Server 2012 集成。微軟還為 Windows 7 的 Service Pack 1、Windows Server 2008 的 Service Pack 1 和 Windows Server 2008 R2 的 Service Pack 1 提供了 PowerShell 3.0。[4][5]
PowerShell 3.0 是一個更大的軟體包 Windows Management Framework 3.0 (WMF3) (WMF3) 的一部分。 PowerShell 3.0 是一個更大的軟體包 Windows 管理框架 3.0 (WMF3) 的一部分,其中還包含支持遠程協作的 WinRM 服務。[6][7]
- 計劃任務:可使用 Windows 任務調度程序基礎架構計劃任務在預定的時間和日期運行。
- 會話重新連接:會話可以斷開並重新連接。遠程會話現在能更好地應對臨時網絡故障。
- 改進了代碼編寫:增加了代碼自動完成(IntelliSense)和代碼片段。PowerShell ISE 允許用戶使用對話框填寫 PowerShell cmdlet 參數。
- 授權支持:可將管理任務授權給無權執行此類任務的用戶,而無需授予他們永久性的額外權限。
- 更新幫助:可使用 Update-Help 命令更新幫助文檔。
安全性[編輯]
PowerShell 5.1存在默認行為缺陷(Template:CVE),攻擊者通過社交工程誘導用戶執行帶污染參數的命令或惡意HTTP,可進行命令注入,該漏洞已在2025年12月修復[10][11]。
參考文獻[編輯]
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ 腳本錯誤:沒有「Citation/CS1」這個模塊。
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
- ↑ Template:Cite web
擴展閱讀[編輯]
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
- Template:Cite book
外部連結[編輯]
- 微軟官網
- 如何使用 PowerShell 文件 - PowerShell | Microsoft Docs
- GitHub - PowerShell/PowerShell: PowerShell for every system! Template:Wayback
- 易學易用的Windows PowerShell Template:Wayback
- MSDN視頻教程 Template:Wayback
- 其他
Template:NavboxV2 Template:Microsoft APIs Template:DotNET Template:Microsoft development tools 腳本錯誤:沒有「Navbox」這個模塊。 Template:Unix-Windows互操作性