PowerShell

来自Local Chinese Wikipedia
跳转到导航 跳转到搜索

Template:Expand English Template:NoteTA 脚本错误:没有“Infobox”这个模块。Template:Template other脚本错误:没有“Check for unknown parameters”这个模块。

PowerShell(包括Windows PowerShellPowerShell 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系统的命令列壳程式(例如:shTemplate:Tslcsh),同时也内建脚本语言以及辅助脚本程式的工具。

程式特性[编辑]

  • 一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。
  • 脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。
  • 内含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(命令行) 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, wgetTemplate:Efn curl wget, curl 取得互联网上的网页内容

Template:Notelist

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]

PowerShell 3.0 的新功能包括:[8][9]

  • 计划任务:可使用 Windows 任务调度程序基础架构计划任务在预定的时间和日期运行。
  • 会话重新连接:会话可以断开并重新连接。远程会话现在能更好地应对临时网络故障。
  • 改进了代码编写:增加了代码自动完成(IntelliSense)和代码片段。PowerShell ISE 允许用户使用对话框填写 PowerShell cmdlet 参数。
  • 授权支持:可将管理任务授权给无权执行此类任务的用户,而无需授予他们永久性的额外权限。
  • 更新帮助:可使用 Update-Help 命令更新帮助文档。

安全性[编辑]

PowerShell 5.1存在默认行为缺陷(Template:CVE),攻击者通过社交工程诱导用户执行带污染参数的命令或恶意HTTP,可进行命令注入,该漏洞已在2025年12月修复[10][11]

参考文献[编辑]

扩展阅读[编辑]

外部链接[编辑]

微软官网
其他

Template:视窗元件 Template:Microsoft APIs Template:DotNET Template:Microsoft development tools 脚本错误:没有“Navbox”这个模块。 Template:Unix-Windows互操作性