PowerShell

任务自动化和组态管理框架

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

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.2 (2024年4月11日;穩定版本)[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

在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

命令提示字元比较编辑

PowerShell命令行與其他命令行解釋器的內部和外部命令的比較
PowerShell(命令行)PowerShell(別名)命令提示符Unix shell描述
Get-ChildItemgci, dir, lsdirls列出目前或指定資料夾中的所有檔案和資料夾
Test-Connection[a]pingpingping從目前電腦向指定電腦傳送Ping,或指示另一台電腦這樣做
Get-Contentgc, type, cattype英语TYPE (DOS command)cat取得檔案內容
Get-Commandgcmhelp英语help (command)type英语type (Unix), which英语which (command), compgen列出可用的命令
Get-Helphelp, manhelp英语help (command)apropos英语apropos (Unix), man在控制台上打印命令的文档
Clear-Hostcls, clearcls英语cls (computing)clear清除屏幕[b]
Copy-Itemcpi, copy, cpcopy, xcopy英语xcopy, robocopy英语robocopycp將檔案和資料夾複製到另一個位置
Move-Itemmi, move, mvmove英语move (command)mv將檔案和資料夾移動到新位置
Remove-Itemri, del, erase, rmdir, rd, rmdel英语del (command), erase英语del (command), rmdir, rdrm, rmdir刪除檔案或資料夾
Rename-Itemrni, ren, mvren英语ren (command), renamemv重命名單個檔案、資料夾、硬連結或符號連結
Get-Locationgl, cd, pwdcdpwd顯示工作路徑(目前資料夾)
Pop-Locationpopdpopd英语pushd and popdpopd將工作路徑更改為最近推送到堆疊上的位置
Push-Locationpushdpushd英语pushd and popdpushd將工作路徑儲存到堆疊中
Set-Locationsl, cd, chdircd, chdircd改變工作路徑
Tee-Objecttee不適用tee將輸入管道傳輸到檔案或變數,並沿管道傳遞輸入
Write-Outputecho, writeechoecho將字符串或其他對像打印到標準串流
Get-Processgps, pstlist,[c] tasklist英语tasklist[d]ps列出所有正在執行的處理程序
Stop-Processspps, killkill英语kill (command),[c] taskkill[d]kill[e]停止正在執行的處理程序
Select-Stringslsfindstrfind, grep打印与模式匹配的行
Set-Variablesv, setset英语Environment variable#DOSenv, export, set, setenv创建或更改环境变量的內容
Invoke-WebRequestiwr, curl, wget[f]curlwget, 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. ^ 3.0 3.1 Available in Windows NT4, Windows 98 Resource Kit, Windows 2000 Support Tools
  4. ^ 4.0 4.1 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.

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。[8][9]

PowerShell 3.0 是一个更大的软件包 Windows Management Framework 3.0 (WMF3) (WMF3) 的一部分。PowerShell 3.0 是一个更大的软件包 Windows 管理框架 3.0 (WMF3) 的一部分,其中还包含支持远程协作的 WinRM 服务。[10][11]

PowerShell 3.0 的新功能包括:[12][13]

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

參考文獻编辑

  1. ^ 1.0 1.1 Release 7.4.2. 2024年4月11日 [2024年4月25日]. 
  2. ^ PowerShell LICENSE. [2017-06-10]. (原始内容存档于2022-05-11). 
  3. ^ Snover, Jeffrey. PowerShell and WPF: WTF. Windows PowerShell Blog. Microsoft. 2008-05-25 [2017-06-10]. (原始内容存档于2019-01-08). 
  4. ^ Bright, Peter. PowerShell is Microsoft's latest open source release, coming to Linux, OS X. Ars Technica. Condé Nast. 2016-08-18 [2017-06-10]. (原始内容存档于2022-04-28). 
  5. ^ How Windows PowerShell works. Microsoft Developer Network. Microsoft. [2007-11-27]. (原始内容存档于2008-09-05). 
  6. ^ Truher, Jim. Extend Windows PowerShell With Custom Commands. MSDN Magazine (Microsoft). December 2007 [2017-06-10]. (原始内容存档于2008-10-06). 
  7. ^ Test-Connection. PowerShell documentations. 微软. 9 August 2015 [2019-12-18]. (原始内容存档于2016-10-31). 
  8. ^ PowerShell Version 3 is RTM!. tfl09.blogspot.com. [2023-09-09]. (原始内容存档于2023-09-05). 
  9. ^ WMF 3.0. www.microsoft.com. [2023-09-09]. (原始内容存档于2023-06-19). 
  10. ^ Powershell Version. poshnit.wordpress.com. [2023-09-09]. (原始内容存档于2023-09-05). 
  11. ^ Microsoft has released Windows Management Framework 3.0 - Community Technology Preview. www.ntcompatible.com. [2023-09-09]. (原始内容存档于2023-09-05). 
  12. ^ What Is PowerShell ISE?. www.easeus.com. [2023-09-09]. (原始内容存档于2023-09-05). 
  13. ^ Introducing Windows 8: An Overview for IT Professionals. books.google.com. [2023-09-09]. (原始内容存档于2023-09-05). 

擴展閱讀编辑

外部連結编辑

微软官网
其他

🔥 Top keywords: Baike: 首页Special:搜索九龍城寨之圍城胖猫跳江事件Energy (組合)淚之女王背着善宰跑逆天奇案2金智媛习近平郭葦昀金秀賢 (男演員)不夠善良的我們九龍寨城邊佑錫伍允龍春色寄情人劉俊謙 (香港)張書偉怪獸8號虽然不是英雄葉乃文謝坤達神耆小子六四事件我的婆婆怎麼那麼可愛排球少年!!角色列表唐振剛2024年湯姆斯盃Seventeen (組合)蕭景鴻排球少年!!WIND BREAKER—防風少年—安東尼·愛德華茲 (籃球運動員)ILLIT中华人民共和国中華民國BABYMONSTER與鳳行張文傑BOYNEXTDOOR彭丽媛笑看風雲日本母亲节习明泽金惠奫徐巧芯從Lv2開始開外掛的前勇者候補過著悠哉異世界生活德雷克 (歌手)搜查班長1958支配物种乘風2024張員瑛承欢记嚴爵香港梅龍高速公路塌陷事故柯建銘葬送的芙莉蓮迷宮飯轉生貴族憑鑑定技能扭轉人生~繼承弱小領土後,招募優秀人才打造最強領土~为人民服务 (2022年电影)黃道十二宮IVE (組合)草榴社区歐倩怡沒有秘密周雨彤柯佳嬿無職轉生~到了異世界就拿出真本事~謝京穎埃马纽埃尔·马克龙破墓周處除三害 (電影)許瑋甯Twitter五月天打天下2逆天奇案李主儐大谷翔平家族榮耀之繼承者胡子彤郭晉安毛泽东Baike: 分類索引沈伯洋白紙運動文化大革命城市猎人 (2024年电影)2024年花蓮地震(G)I-DLE城市猎人朴成焄郭宁宁2024年優霸盃哥吉拉-1.0汤姆斯杯