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