PowerShell(包括Windows PowerShellPowerShell Core)是微软公司开发的任务自动化和配置管理架构,由在.NET Framework和后来的.NET上构建的命令行界面壳层相关脚本语言组成,最初仅仅是Windows组件,后于2016年8月18日开源并提供跨平台支持。[4]

Quick Facts 编程范型, 设计者 ...
PowerShell
Windows Terminal内运行的PowerShell 7
编程范型命令式管道面向对象函数式反射式
设计者杰弗里·史诺威英语Jeffrey Snover(Jeffrey Snover)
布鲁斯·帕耶特(Bruce Payette)
詹姆斯·特鲁赫(James Truher) (et al.)
实现者Microsoft
发行时间2006年11月14日,​17年前​(2006-11-14
当前版本
  • 7.4.5 (2024年8月20日;稳定版本)[1]
编辑维基数据链接
类型系统强类型类型安全类型推论动态类型
系统平台PowerShell: .NET
Windows PowerShell: .NET框架
操作系统Windows 7及其后续版本、LinuxmacOS
许可证MIT许可证[2](但Windows组件仍然是专有的
文件扩展名
  • .ps1 (脚本文件)
  • .ps1xml(XML文档)
  • .psc1(控制台文件)
  • .psd1(数据文件)
  • .psm1(脚本模块)
  • .pssc(会话配置文件)
  • .cdxml (Cmdlet定义的XML文档)
网站microsoft.com/powershell 编辑维基数据链接
启发语言
KshPerlC#CL英语IBM i Control LanguageDCL英语DIGITAL Command LanguageSQLTclTk[3]ChefPuppet
Close

在PowerShell中,管理任务通常由cmdlets(发音为command-lets)执行,这是执行特定操作的专用.NET。可以将cmdlet集合至脚本、可执行文件(一般是独立应用程序)中,或通过常规.NET类(或WMI / COM对象)实例化。[5][6]

源起与目的

UNIX系统一直有着功能强大的壳程序(shell),Windows PowerShell的诞生就是要提供功能相当于UNIX系统的命令行壳程序(例如:shbashcsh),同时也内置脚本语言以及辅助脚本程序的工具。

程序特性

  • 一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。
  • 脚本语言简单易学,而且能支持现有的脚本程序和命令行工具。
  • 内含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

Windows PowerShell 3.0

参考文献

扩展阅读

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.