Windows PowerShell

PowerShell(包括Windows PowerShellPowerShell Core)是微軟公司开发的任务自动化和組態管理框架,由.NET Framework.NET Core是构建的命令行界面殼層相关脚本语言组成,最初僅僅是Windows元件,后于2016年8月18日开源跨平台支持。[4]

PowerShell
Screenshot of a Windows PowerShell session
命令式管道面向对象函数式反射式
設計者杰弗里·史诺威(Jeffrey Snover)
布鲁斯·帕耶特(Bruce Payette)
詹姆斯·特鲁赫(James Truher) (et al.)
實作者Microsoft
2006年11月14日2006-11-14
穩定版本
7.1.0
(2020年11月11日2020-11-11[1]
型態系統强类型类型安全类型推论动态类型
系统平台.NET Framework, .NET Core
作業系統Windows 7及其后续版本、LinuxmacOS
許可證MIT許可證[2](但Windows组件仍然是专有的
文件扩展名
  • .ps1 (脚本文件)
  • .ps1xml(XML文档)
  • .psc1(控制台文件)
  • .psd1(数据文件)
  • .psm1(脚本模块)
  • .pssc(会话配置文件)
  • .cdxml (Cmdlet定义的XML文档)
網站
啟發語言
KshPerlC#CLDCLSQLTclTk[3]ChefPuppet

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

源起與目的

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

与命令提示符等的比较

PowerShell命令行與其他命令行解釋器的內部和外部命令的比較
PowerShell(命令行) PowerShell(別名) 命令提示符 Unix shell 描述
Get-ChildItem gci, dir, ls dir ls 列出當前或給定文件夾中的所有文件和文件夾
Test-Connection[lower-alpha 1] ping ping ping 從當前計算機向指定計算機發送互聯網控制消息協議回顯請求,或指示另一台計算機這樣做
Get-Content gc, type, cat type cat 獲取文件內容
Get-Command gcm help type, which, compgen 列出可用的命令
Get-Help help, man help apropos, man 在控制台上打印命令的文檔
Clear-Host cls, clear cls clear 清除屏幕[lower-alpha 2]
Copy-Item cpi, copy, cp copy, xcopy, robocopy 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,[lower-alpha 3] tasklist[lower-alpha 4] ps 列出所有正在運行的進程
Stop-Process spps, kill kill,[lower-alpha 3] taskkill[lower-alpha 4] kill[lower-alpha 5] 停止正在運行的進程
Select-String sls findstr find, grep 打印与模式匹配的行
Set-Variable sv, set set env, export, set, setenv 创建或更改环境变量的內容
Invoke-WebRequest iwr, curl, wget[lower-alpha 6] curl wget, curl 获取因特网上的网页內容
  1. 尽管外部ping命令仍可用於PowerShell,但“Test-Connection”的输出是一个可以通过编程来检查的结构化对象
    While the external ping command remains available to PowerShell, Test-Connection's output is a structured object that can be programmatically inspected.[7]
  2. Clear-Host被實現為預定義的PowerShell功能。
  3. Available in Windows NT4, Windows 98 Resource Kit, Windows 2000 Support Tools
  4. Available in Windows XP Professional Edition and later
  5. Also used in UNIX to send a process any signal, the "Terminate" signal is merely the default
  6. curl and wget aliases are absent from PowerShell Core, so as to not interfere with invoking similarly named native commands.

參考文獻

  1. . GitHub. [2020-11-11].
  2. PowerShell LICENSE
  3. Snover, Jeffrey. . Windows PowerShell Blog. Microsoft. 2008-05-25.
  4. Bright, Peter. . Ars Technica. Condé Nast. 2016-08-18.
  5. . Microsoft Developer Network. Microsoft. [2007-11-27].
  6. Truher, Jim. . MSDN Magazine (Microsoft). December 2007 [2017-06-10]. (原始内容存档于2008-10-06).
  7. . PowerShell documentations. 微软. 9 August 2015.

擴展閱讀

  • Oakley, Andy. . O'Reilly Media. 2005. ISBN 0-596-10009-4.
  • Holmes, Lee. . O'Reilly Media. 2006. ISBN 0-596-52813-2.
  • Holmes, Lee. . O'Reilly Media. 2007. ISBN 0-596-52849-3.
  • Watt, Andrew. . Wrox Press. 2007. ISBN 0-471-94693-1.
  • Kumaravel, Arul; White, Jon; Naixin Li, Michael; Happell, Scott; Xie, Guohui; Vutukuri, Krishna C. . Wrox Press. 2008. ISBN 0-470-17393-9.
  • Kopczynski, Tyson; Handley, Pete; Shaw, Marco. 2nd. Pearson Education. 2009. ISBN 978-0-672-32988-3.
  • Jones, Don; Hicks, Jeffery. 3rd. Sapien Technologies. 2010. ISBN 978-0-9821314-2-8.
  • Finke, Douglas. . O'Reilly Media. 2012. ISBN 1-4493-2270-0.
  • Wilson, Ed. . Microsoft Press. 2013. ISBN 978-0-7356-6339-8.
  • Wilson, Ed. . Microsoft Press. 2014. ISBN 978-0-7356-6649-8.

外部連結

微软官网
其他

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.