PowerShell

PowerShell（包括Windows PowerShell和PowerShell Core）是微軟公司開發的任務自動化和組態管理架構，由在.NET Framework和後來的.NET上構建的命令行界面殼層相關腳本語言組成，最初僅僅是Windows元件，後於2016年8月18日開源並提供跨平臺支持。
在PowerShell中，管理任務通常由cmdlets（發音為command-lets）執行，這是執行特定操作的專用.NET類。可以將cmdlet集合至腳本、可執行文件（一般是獨立應用程序）中，或通過常規.NET類（或WMI / COM對象）實例化。

**源起與目的**
UNIX系統一直有著功能強大的殼程式（shell），Windows PowerShell的誕生就是要提供功能相當於UNIX系統的命令列殼程式（例如：sh、bash或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技術為基礎，並且與現有的WSH保持回溯相容，因此它的腳本程式不僅能存取.NET CLR，也能使用現有的COM技術。同時也包含了數種系統管理工具、簡易且一致的語法，常見如登錄資料庫、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

**命令提示字元比較**
}, 
cp
將檔案和資料夾複製到另一個位置
Move-Item
mi, move, mv
move
mv
將檔案和資料夾移動到新位置
Remove-Item
ri, del, erase, rmdir, rd, rm
del, erase, rmdir, rd
rm, rmdir
刪除檔案或資料夾
Rename-Item
rni, ren, mv
ren, 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,1=Available in Windows NT4, Windows 98 Resource Kit, Windows 2000 Support Tools 
ps
列出所有正在執行的處理程序
Stop-Process
spps, kill
kill,name="Available tlist kill" taskkillname="Available tasklist taskkill"
killefn|name="UNIX kill misnomer"|1=Also used in UNIX to send a process any signal, the "Terminate" signal is merely the default
停止正在執行的處理程序
Select-String
sls
findstr
find, grep
打印與模式匹配的-{zh-tw:列;zh-cn:行;}-
Set-Variable
sv, set
set
env, export, set, setenv
創建或更改環境變量的內容
Invoke-WebRequest
iwr, curl, wgetcurl and wget aliases are absent from PowerShell Core, so as to not interfere with invoking similarly named native commands.
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。
PowerShell 3.0 是一個更大的軟件包 Windows Management Framework 3.0 (WMF3) (WMF3) 的一部分。
PowerShell 3.0 是一個更大的軟件包 Windows 管理框架 3.0 (WMF3) 的一部分，其中還包含支持遠程協作的 WinRM 服務。
PowerShell 3.0 的新功能包括：
*計劃任務：可使用 Windows 任務調度程序基礎架構計劃任務在預定的時間和日期運行。
*會話重新連接：會話可以斷開並重新連接。遠程會話現在能更好地應對臨時網絡故障。
*改進了代碼編寫：增加了代碼自動完成（IntelliSense）和代碼片段。PowerShell ISE 允許用戶使用對話框填寫 PowerShell cmdlet 參數。
*授權支持：可將管理任務授權給無權執行此類任務的用戶，而無需授予他們永久性的額外權限。
*更新幫助：可使用 Update-Help 命令更新幫助文檔。

**參考文獻**

**擴展閱讀**
 Cite book |title=Monad (AKA PowerShell) |first=Andy |last=Oakley |isbn=0-596-10009-4 |year=2005 |publisher=O'Reilly Media- Cite book |title=Windows PowerShell Quick Reference |first=Lee |last=Holmes |isbn=0-596-52813-2 |publisher=O'Reilly Media |year=2006- Cite book |title=Windows PowerShell Cookbook |first=Lee |last=Holmes |isbn=0-596-52849-3 |publisher=O'Reilly Media |year=2007- Cite book |title=Windows PowerShell Unleashed |url=https://archive.org/details/windowspowershel0000kopc_i9y6 |first=Tyson |last=Kopczynski |first2=Pete |last2=Handley |first3=Marco |last3=Shaw |isbn=978-0-672-32988-3 |edition=2nd |year=2009 |publisher=Pearson Education- publisher=Sapien Technologies- Cite book |title=Windows PowerShell for Developers |url=https://archive.org/details/windowspowershel0000fink |first=Douglas |last=Finke |isbn=1-4493-2270-0 |year=2012 |publisher=O'Reilly Media- Cite book |title=Windows PowerShell 3.0 Step by Step |url=https://archive.org/details/windowspowershel0000wils |first=Ed |last=Wilson |isbn=978-0-7356-6339-8 |publisher=Microsoft Press |year=2013- cite book |title=Windows PowerShell Best Practices |last=Wilson |first=Ed |publisher=Microsoft Press |isbn=978-0-7356-6649-8 |year=2014

**外部連結**
微軟官網-  如何使用 PowerShell 文件 - PowerShell | Microsoft Docs-  GitHub - PowerShell/PowerShell: PowerShell for every system! date=20200514210658 -  易學易用的Windows PowerShell date=20180108233506 -  MSDN視頻教程 date=20210716070446 
其他- PowerShell/PowerShell- TechNet維基： Windows PowerShell Survival Guide date=20120915113215