กลับไปหน้าบทความ

อ่าน 28 นาที

พาวเวอร์เชลล์

PowerShell เป็น โปรแกรม เชลล์ ที่พัฒนาโดย Microsoft สำหรับการทำงานอัตโนมัติและ การจัดการการกำหนดค่า โดยทั่วไปแล้วเชลล์จะมี ตัวแปล คำสั่ง บรรทัดคำสั่ง สำหรับการใช้งานแบบโต้ตอบ และ...

พาวเวอร์เชลล์

พาวเวอร์เชลล์
ภาพหน้าจอแสดงเซสชัน PowerShell 7.5.0 ในWindows Terminal
กระบวนทัศน์เชิงบังคับ , แบบท่อ , เชิงวัตถุ , เชิงฟังก์ชันและแบบสะท้อนกลับ
ออกแบบโดยเจฟฟรีย์ สโนเวอร์ , บรูซ เพย์เยตต์, เจมส์ ทรูเฮอร์ (และคนอื่นๆ)
นักพัฒนาไมโครซอฟต์
ปรากฏครั้งแรก14 พฤศจิกายน 2549 ( 14 พฤศจิกายน 2549 )
เวอร์ชันเสถียร
7.6.3 [ 1 ] แก้ไขข้อมูลนี้บนวิกิดาต้า / 16 มิถุนายน 2026 ( 16 มิถุนายน 2569 )
รุ่นทดลองใช้งาน
7.7.0-preview.2 / 27 พฤษภาคม 2026 [ 2 ] ( 27 พฤษภาคม 2026 )
วินัยในการพิมพ์แข็งแกร่งปลอดภัยชัดเจนและยืดหยุ่น
ภาษาการใช้งานซี#
แพลตฟอร์มPowerShell: .NET Windows PowerShell: .NET Framework
โอเอส
ใบอนุญาตใบอนุญาต MIT [ 3 ] (แต่ส่วนประกอบ Windows ยังคงเป็นกรรมสิทธิ์ )
นามสกุลไฟล์
  • .ps1 (สคริปต์)
  • .ps1xml (เอกสาร XML)
  • .psc1 (ไฟล์คอนโซล)
  • .psd1 (ไฟล์ข้อมูล)
  • .psm1 (โมดูลสคริปต์)
  • .pssc (ไฟล์การกำหนดค่าเซสชัน)
  • .psrc (ไฟล์ความสามารถของบทบาท)
  • .cdxml (เอกสาร XML สำหรับกำหนดคำจำกัดความของ Cmdlet)
เว็บไซต์microsoft.com/powershell
ได้รับอิทธิพลจาก
Python , Shell script , Perl , C# , CL , DCL , SQL , Tcl , Tk , [ 4 ] Chef , Puppet

PowerShellเป็นโปรแกรมเชลล์ ที่พัฒนาโดยMicrosoftสำหรับการทำงานอัตโนมัติและการจัดการการกำหนดค่าโดยทั่วไปแล้วเชลล์จะมีตัวแปล คำสั่ง บรรทัดคำสั่งสำหรับการใช้งานแบบโต้ตอบ และ ตัวแปล สคริปต์สำหรับการทำงานอัตโนมัติผ่านภาษาที่กำหนดไว้ เดิมทีมีเฉพาะสำหรับ Windows ซึ่งรู้จักกันในชื่อWindows PowerShellแต่ได้เปิดให้ใช้งานแบบโอเพนซอร์สและข้ามแพลตฟอร์มเมื่อวันที่ 18 สิงหาคม 2559 พร้อมกับการเปิดตัวPowerShell Core [ 5 ] โดย แบบแรกสร้างขึ้นบน. NET Frameworkและแบบหลังสร้างขึ้นบน.NET (เดิมคือ .NET Core)

PowerShell มาพร้อมกับWindows เวอร์ชัน ปัจจุบัน และสามารถติดตั้งบนmacOSและLinuxได้[ 5 ]ตั้งแต่Windows 10 build 14971 PowerShell ได้เข้ามาแทนที่Command Prompt ในฐานะ เชลล์คำสั่งเริ่มต้นที่แสดงโดยFile Explorer [ 6 ] [ 7 ]

ใน PowerShell งานด้านการดูแลระบบโดยทั่วไปจะดำเนินการผ่านcmdlets (อ่านว่าcommand-lets ) ซึ่งเป็นคลาส .NET เฉพาะ ที่ ใช้ในการดำเนินการเฉพาะอย่าง โดยทำงานผ่านการเข้าถึงข้อมูลในแหล่งเก็บข้อมูลต่างๆ เช่นระบบไฟล์หรือWindows Registryซึ่ง PowerShell สามารถเข้าถึงได้ผ่านprovidersนักพัฒนาซอฟต์แวร์ภายนอกสามารถเพิ่ม cmdlets และ providers ลงใน PowerShell ได้[ 8 ] [ 9 ] cmdlets สามารถใช้โดยสคริปต์ ซึ่งอาจถูกบรรจุเป็นโมดูลได้ cmdlets ทำงานร่วมกับ . NET API

การสนับสนุนของ PowerShell สำหรับ.NET Remoting , WS-Management , CIMและSSHช่วยให้ผู้ดูแลระบบสามารถดำเนินการงานด้านการดูแลระบบได้ทั้งบนระบบ Windows ในเครื่องและระยะไกล PowerShell ยังมีAPI สำหรับการโฮสต์ ซึ่งช่วยให้สามารถฝังรันไทม์ของ PowerShell ไว้ในแอปพลิเคชันอื่นๆ ได้ จากนั้นแอปพลิเคชันเหล่านี้สามารถใช้ฟังก์ชันการทำงานของ PowerShell เพื่อดำเนินการบางอย่าง รวมถึงการดำเนินการที่แสดงผ่านทางอินเทอร์เฟซแบบกราฟิกความสามารถนี้ถูกใช้โดยMicrosoft Exchange Server 2007 เพื่อเปิดเผยฟังก์ชันการจัดการเป็น cmdlet และ provider ของ PowerShell และใช้งานเครื่องมือการจัดการแบบกราฟิกเป็นโฮสต์ของ PowerShell ซึ่งเรียกใช้ cmdlet ที่จำเป็น[ 8 ] [ 10 ]แอปพลิเคชันอื่นๆ ของ Microsoft รวมถึงMicrosoft SQL Server 2008ยังเปิดเผยอินเทอร์เฟซการจัดการผ่านทาง cmdlet ของ PowerShell ด้วย[ 11 ]

PowerShell มี ระบบช่วยเหลือ แบบคอนโซลที่ ครอบคลุม (คล้ายกับหน้าคู่มือในเชลล์ Unix ) ซึ่งสามารถเข้าถึงได้ผ่านทางGet-Helpcmdlet นอกจากนี้ ยังสามารถเรียกดูเนื้อหาช่วยเหลือในเครื่องที่อัปเดตแล้วจากอินเทอร์เน็ตได้ผ่านทางUpdate-Helpcmdlet หรืออีกทางเลือกหนึ่ง สามารถขอความช่วยเหลือจากเว็บได้เป็นกรณีๆ ไปผ่านทาง-onlineสวิตช์ ` Get-Help--help`

พื้นหลัง

โปรแกรมเชลล์ รวมถึง PowerShell มีต้นกำเนิดมาจากเชลล์ในระบบปฏิบัติการ รุ่นเก่า เช่นMS-DOSและXenixซึ่งเปิดเผยฟังก์ชันการทำงานของระบบให้ผู้ใช้ใช้งานได้เกือบทั้งหมดผ่านทางอินเทอร์เฟซบรรทัดคำสั่ง (CLI) – แม้ว่าMS-DOS 5จะมีDOS Shell แบบกราฟิกที่ใช้งานร่วมกันได้ด้วยก็ตาม ตระกูลWindows 9xมาพร้อมกับCOMMAND.COMซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งของ MS-DOS อย่างไรก็ตาม ตระกูลWindows NTและWindows CE มาพร้อมกับ cmd.exe รุ่นใหม่กว่า ซึ่งเป็นการอัพเกรดครั้งสำคัญจาก COMMAND.COM ทั้งสองสภาพแวดล้อมนี้มี CLI สำหรับคำสั่งทั้งภายในและภายนอก รวมถึงการทำงานอัตโนมัติผ่านไฟล์แบตช์ซึ่งเป็นภาษาสคริปต์ที่ค่อนข้างดั้งเดิม

เพื่อแก้ไขข้อจำกัดของเชลล์เหล่านี้ ซึ่งรวมถึงการไม่สามารถใช้งานส่วนประกอบซอฟต์แวร์ที่เปิดเผยผ่านCOM ได้โดยตรง ไมโครซอฟต์จึงได้เปิดตัวWindows Script Hostในปี 1998 พร้อมกับWindows 98และโฮสต์แบบบรรทัดคำสั่งcscript.exeมันทำงานร่วมกับ เอ็นจิ้น Active Scriptและอนุญาตให้เขียนสคริปต์ในภาษาที่เข้ากันได้ เช่นJScriptและVBScriptสคริปต์เหล่านี้สามารถใช้ส่วนประกอบ COM ได้โดยตรง แต่มีเอกสารประกอบที่เข้าถึงได้ยากและได้รับชื่อเสียงว่าเป็นช่องทางช่องโหว่ ของระบบหลังจาก ไวรัสคอมพิวเตอร์ชื่อดังหลายตัวใช้ประโยชน์จากจุดอ่อนในมาตรการรักษาความปลอดภัยของมัน

Windows เวอร์ชันต่างๆ มีตัวแปลคำสั่งบรรทัดคำสั่งเฉพาะทางต่างๆ (เช่นnetshและWMIC ) พร้อมชุดคำสั่งของตนเอง แต่ไม่สามารถใช้งานร่วมกันได้Windows Server 2003พยายามปรับปรุงประสบการณ์การใช้งานบรรทัดคำสั่งให้ดียิ่งขึ้น แต่การสนับสนุนการเขียนสคริปต์ก็ยังไม่เป็นที่น่าพอใจ[ 12 ]

เคอร์มิต

เจฟฟรีย์ สโนเวอร์ผู้จัดการโครงการของ Microsoft และหัวหน้าสถาปนิกของ PowerShell

ในช่วงปลายทศวรรษ 1990 อินเทลได้ขอความช่วยเหลือจากไมโครซอฟต์ในการทำให้ Windows ซึ่งทำงานบนซีพียูของอินเทล เป็นแพลตฟอร์มที่เหมาะสมยิ่งขึ้นในการสนับสนุนการพัฒนาซีพียูของอินเทลในอนาคต ในขณะนั้น การพัฒนาซีพียูของอินเทลดำเนินการบน คอมพิวเตอร์ของ Sun Microsystemsซึ่งใช้Solaris ( ระบบปฏิบัติการ Unixเวอร์ชันหนึ่ง) บน ซีพียูสถาปัตยกรรม RISCความสามารถในการเรียกใช้ สคริปต์อัตโนมัติ KornShell จำนวนมากของอินเทล บน Windows ถูกระบุว่าเป็นความสามารถที่สำคัญ ภายใน ไมโครซอฟต์ได้เริ่มความพยายามในการสร้างพอร์ต Korn Shell สำหรับ Windows ซึ่งมีชื่อรหัสว่า Kermit [ 13 ]ในที่สุด อินเทลก็เปลี่ยนไปใช้ แพลตฟอร์มการพัฒนาบน Linux ที่สามารถทำงานบนซีพียูของอินเทล ทำให้โครงการ Kermit ไม่จำเป็นอีกต่อไป อย่างไรก็ตาม ด้วยทีมงานที่ได้รับเงินทุนอย่างเต็มที่ Jeffrey Snoverผู้จัดการโครงการของไมโครซอฟต์ตระหนักว่ามีโอกาสที่จะสร้างโซลูชันอเนกประสงค์มากขึ้นสำหรับปัญหาการทำงานอัตโนมัติของฝ่ายบริหารของไมโครซอฟต์

โมนาด

ในปี 2002 ไมโครซอฟต์ได้เริ่มพัฒนาแนวทางใหม่ในการจัดการบรรทัดคำสั่ง ซึ่งรวมถึง CLI ที่เรียกว่า Monad (หรือที่รู้จักกันในชื่อMicrosoft Shellหรือ MSH) แนวคิดเบื้องหลังได้รับการเผยแพร่ในเดือนสิงหาคม 2002 ในเอกสารไวท์เปเปอร์ที่เรียกว่า "Monad Manifesto" โดยJeffrey Snoverหัวหน้า สถาปนิก [ 14 ]ในการสัมภาษณ์เมื่อปี 2017 Snover อธิบายถึงที่มาของ PowerShell โดยกล่าวว่าเขาพยายามทำให้ เครื่องมือ Unixสามารถใช้งานได้บน Windows ซึ่งไม่สำเร็จเนื่องจาก " ความแตกต่างทางสถาปัตยกรรมหลักระหว่าง Windows และ Linux " โดยเฉพาะอย่างยิ่ง เขาตั้งข้อสังเกตว่าLinuxถือว่าทุกอย่างเป็นไฟล์ข้อความในขณะที่ Windows ถือว่าทุกอย่างเป็น " APIที่ส่งคืนข้อมูลที่มีโครงสร้าง" ซึ่งเข้ากันไม่ได้โดยพื้นฐาน ทำให้เขาต้องใช้วิธีการที่แตกต่างออกไป[ 15 ]

Monad ถูกออกแบบมาให้เป็น CLI (Continuous Integration Interface) ที่สามารถขยายขีดความสามารถได้ และมีดีไซน์ใหม่ที่ช่วยในการทำงานอัตโนมัติสำหรับงานบริหารจัดการหลักๆ หลายอย่าง ไมโครซอฟต์ได้สาธิต Monad ต่อสาธารณะเป็นครั้งแรกในงาน Professional Development Conference ที่ลอสแอนเจลิสในเดือนตุลาคม ปี 2003 ไม่กี่เดือนต่อมา พวกเขาได้เปิดให้ทดลองใช้งานแบบส่วนตัว ซึ่งในที่สุดก็พัฒนาไปสู่การทดลองใช้งานแบบสาธารณะ ไมโครซอฟต์ได้เผยแพร่ Monad เวอร์ชันเบต้า สาธารณะครั้งแรก เมื่อวันที่ 17 มิถุนายน ปี 2005 และเวอร์ชัน Beta 2 เมื่อวันที่ 11 กันยายน ปี 2005 และเวอร์ชัน Beta 3 เมื่อวันที่ 10 มกราคม ปี 2006

พาวเวอร์เชลล์

พาวเวอร์เชลล์เวอร์ชันแรก

เมื่อวันที่ 25 เมษายน พ.ศ. 2549 สองปีครึ่งหลังจากประกาศ Monad ครั้งแรก ไมโครซอฟต์ได้ประกาศว่า Monad ได้เปลี่ยนชื่อเป็นWindows PowerShellโดยวางตำแหน่งให้เป็นส่วนสำคัญของเทคโนโลยีการจัดการ[ 16 ] เวอร์ชัน Release Candidate (RC) 1 ของ PowerShell ได้รับการเผยแพร่ในเวลาเดียวกัน ประเด็นสำคัญของการเปลี่ยนชื่อและเวอร์ชัน RC คือ ตอนนี้มันเป็นส่วนประกอบของ Windows แทนที่จะเป็นเพียงส่วนเสริม เวอร์ชัน 1.0 สุดท้ายถูกรวมไว้เป็นส่วนหนึ่งของ Windows Vista

PowerShell เวอร์ชัน 1 รุ่น Release Candidate 2 ได้รับการเผยแพร่เมื่อวันที่ 26 กันยายน 2549 โดยมีการเผยแพร่เวอร์ชันสุดท้ายบนเว็บเมื่อวันที่ 14 พฤศจิกายน 2549 PowerShell สำหรับ Windows เวอร์ชันก่อนหน้าได้รับการเผยแพร่เมื่อวันที่ 30 มกราคม 2550 [ 17 ]การพัฒนา PowerShell v2.0 เริ่มต้นขึ้นก่อนที่ PowerShell v1.0 จะได้รับการเผยแพร่ ในระหว่างการพัฒนา Microsoft ได้เผยแพร่Community Technology Preview (CTP) จำนวน 3 เวอร์ชัน Microsoft ได้เปิดให้สาธารณะใช้งานเวอร์ชันเหล่านี้ การเผยแพร่ CTP ครั้งสุดท้ายของ Windows PowerShell v2.0 ได้รับการเผยแพร่ในเดือนธันวาคม 2551

PowerShell เวอร์ชัน 2.0 เสร็จสมบูรณ์และวางจำหน่ายในเดือนสิงหาคม พ.ศ. 2552 โดยเป็นส่วนหนึ่งของ Windows 7 และ Windows Server 2008 R2 เวอร์ชันของ PowerShell สำหรับ Windows XP, Windows Server 2003, Windows Vista และ Windows Server 2008 วางจำหน่ายในเดือนตุลาคม พ.ศ. 2552 และสามารถดาวน์โหลดได้ทั้งบนแพลตฟอร์ม 32 บิตและ 64 บิต[ 18 ] ใน นิตยสาร TechNetฉบับเดือนตุลาคม พ.ศ. 2552 ไมโครซอฟต์กล่าวว่าความเชี่ยวชาญในการใช้ PowerShell เป็น "ทักษะที่สำคัญที่สุดเพียงอย่างเดียวที่ผู้ดูแล ระบบ Windows จะต้องมีในอีกไม่กี่ปีข้างหน้า" [ 19 ]

Windows 10 มาพร้อมกับ Pester ซึ่งเป็นชุดตรวจสอบความถูกต้องของสคริปต์สำหรับ PowerShell [ 20 ]

PowerShell สำหรับ Linux 7.3.1 บนUbuntu 22.10

เมื่อวันที่ 18 สิงหาคม 2559 ไมโครซอฟต์ประกาศ[ 21 ]ว่าพวกเขาได้ทำให้ PowerShell เป็นโอเพนซอร์สและใช้งานได้หลายแพลตฟอร์ม โดยรองรับ Windows, macOS , CentOSและUbuntu [ 5 ] ซอร์สโค้ดได้รับการเผยแพร่บนGitHub [ 22 ] การเปลี่ยนไปใช้โอเพนซอร์สทำให้เกิด PowerShell เวอร์ชันที่สองที่เรียกว่า "PowerShell Core" ซึ่งทำงานบน . NET Coreซึ่งแตกต่างจาก "Windows PowerShell" ที่ทำงานบน .NET Framework เวอร์ชันเต็ม[ 23 ] ตั้งแต่เวอร์ชัน5.1เป็นต้นไป PowerShell Core จะถูกรวมอยู่ในWindows Server 2016 Nano Server [ 24 ] [ 25 ]

แพช

โครงการชื่อPashซึ่ง เป็นการ เล่นคำกับเชลล์ Unix ที่รู้จักกันอย่างแพร่หลายอย่าง " bash " เป็นการนำ PowerShell กลับมาใช้งานใหม่ในรูป แบบ โอเพนซอร์สและข้ามแพลตฟอร์ม โดยใช้เฟรมเวิร์ กMono [ 26 ] Pash ถูกสร้างขึ้นโดย Igor Moochnick เขียนด้วยภาษาC#และเผยแพร่ภายใต้ใบอนุญาตสาธารณะทั่วไปของ GNUการพัฒนา Pash หยุดชะงักในปี 2008 เริ่มต้นใหม่บนGitHubในปี 2012 [ 27 ]และในที่สุดก็หยุดลงในปี 2016 เมื่อ PowerShell ได้รับการเปิดเผยอย่างเป็นทางการให้เป็นโอเพนซอร์สและข้ามแพลตฟอร์ม[ 28 ]

ออกแบบ

ปรัชญา

เป้าหมายการออกแบบที่สำคัญของ PowerShell คือการใช้ประโยชน์จาก APIจำนวนมากที่มีอยู่แล้วใน Windows, Windows Management Instrumentation, .NET Framework และซอฟต์แวร์อื่นๆ โดยทั่วไปแล้ว cmdlet ของ PowerShell จะห่อหุ้มและเปิดเผยฟังก์ชันการทำงานที่มีอยู่แทนที่จะสร้างฟังก์ชันการทำงานใหม่ จุดประสงค์คือเพื่อให้ผู้ดูแลระบบสามารถเข้าถึงอินเทอร์เฟซที่ใช้งานง่ายและสอดคล้องกันมากขึ้นระหว่างผู้ดูแลระบบและฟังก์ชันการทำงานพื้นฐานที่หลากหลาย ด้วย PowerShell ผู้ดูแลระบบไม่จำเป็นต้องรู้จัก .NET, WMI หรือการเขียนโค้ด API ระดับต่ำ และสามารถมุ่งเน้นไปที่การใช้ cmdlet ที่ PowerShell เปิดเผยได้ ในแง่นี้ PowerShell สร้างฟังก์ชันการทำงานใหม่เพียงเล็กน้อย แต่เน้นไปที่การทำให้ฟังก์ชันการทำงานที่มีอยู่เข้าถึงได้ง่ายขึ้นสำหรับกลุ่มเป้าหมายเฉพาะ[ 29 ]

ไวยากรณ์

นักพัฒนา PowerShell ได้ใช้ไวยากรณ์หลักของเครื่องมือโดยอิงจากไวยากรณ์ของKornShell ตามมาตรฐาน POSIX 1003.2 [ 30 ]

อย่างไรก็ตาม ภาษาของ PowerShell ยังได้รับอิทธิพลจากPHP , Perlและภาษาอื่นๆ ที่มีอยู่มากมาย[ 31 ]

คำสั่งที่มีชื่อ

PowerShell สามารถเรียกใช้คำสั่งที่มีชื่อได้สี่ประเภท: [ 32 ]

  • cmdlet ( โปรแกรม . NET Frameworkที่ออกแบบมาเพื่อทำงานร่วมกับ PowerShell)
  • สคริปต์ PowerShell (ไฟล์ที่มีนามสกุล .powerShell .ps1)
  • ฟังก์ชัน PowerShell
  • โปรแกรมปฏิบัติการแบบสแตนด์อโลน

หากคำสั่งเป็นโปรแกรมปฏิบัติการแบบสแตนด์อโลน PowerShell จะเรียกใช้ในกระบวนการ แยกต่างหาก หากเป็น cmdlet จะทำงานในกระบวนการของ PowerShell PowerShell มีอินเทอร์เฟซบรรทัดคำสั่ง แบบโต้ตอบ ซึ่งสามารถป้อนคำสั่งและแสดงผลลัพธ์ได้ อินเทอร์เฟซผู้ใช้มีการเติมข้อความ อัตโนมัติที่ปรับแต่งได้ PowerShell ช่วยให้สามารถสร้างนามแฝงสำหรับ cmdlet ซึ่ง PowerShell จะแปลงเป็นข้อความเรียกใช้คำสั่งดั้งเดิม PowerShell รองรับทั้งพารามิเตอร์แบบระบุชื่อและแบบระบุตำแหน่งสำหรับคำสั่ง ในการเรียกใช้ cmdlet งานของการผูกค่าอาร์กิวเมนต์กับพารามิเตอร์จะทำโดย PowerShell เอง แต่สำหรับโปรแกรมปฏิบัติการภายนอก อาร์กิวเมนต์จะถูกแยกวิเคราะห์โดยโปรแกรมปฏิบัติการภายนอกโดยอิสระจากการตีความของ PowerShell [ 33 ]

ระบบประเภทขยาย

ระบบประเภทขยายของ PowerShell ( ETS ) อิงตามระบบประเภทของ .NET แต่มีความหมายที่ขยายเพิ่มเติม (เช่น propertySets และความสามารถในการขยายของบุคคลที่สาม) ตัวอย่างเช่น ช่วยให้สามารถสร้างมุมมองที่แตกต่างกันของวัตถุได้โดยการเปิดเผยเฉพาะฟิลด์ข้อมูล คุณสมบัติ และเมธอดบางส่วน รวมถึงการระบุรูปแบบและพฤติกรรมการเรียงลำดับที่กำหนดเอง มุมมองเหล่านี้จะถูกแมปกับวัตถุต้นฉบับโดยใช้ไฟล์การกำหนดค่าแบบXML [ 34 ]

คำสั่ง

cmdlet คือคลาส .NET ที่สืบทอดมาจากCmdletหรือ จาก โดยPSCmdletคลาสหลังจะใช้เมื่อจำเป็นต้องโต้ตอบกับรันไทม์ของ PowerShell [ 35 ]คลาสพื้นฐานจะระบุเมธอด – BeginProcessing(), ProcessRecord()และEndProcessing()– ซึ่ง cmdlet จะเขียนทับเพื่อให้ฟังก์ชันการทำงานตามเหตุการณ์ที่ฟังก์ชันเหล่านี้แสดง เมธอดProcessRecord()จะถูกเรียกหากวัตถุได้รับอินพุตจากไปป์ไลน์[ 36 ]หากมีการส่งคอลเลกชันของวัตถุผ่านไปป์ไลน์ เมธอด จะถูกเรียกใช้สำหรับแต่ละวัตถุในคอลเลกชัน คลาส cmdlet ต้องมีแอตทริบิวต์CmdletAttributeซึ่งระบุคำกริยาและคำนามที่ประกอบเป็นชื่อของ cmdlet

ชื่อ cmdlet เป็นไปตาม รูปแบบการตั้งชื่อ แบบคำกริยา-คำนามเช่นGet-ChildItemซึ่งมักจะทำให้มีการอธิบายตัวเองได้ [ 35 ] คำกริยาทั่วไปมีให้ในรูปแบบenum [ 37 ] [ 38 ]

หาก cmdlet รับอินพุตจากไปป์ไลน์หรืออินพุตพารามิเตอร์บรรทัดคำสั่ง จะต้องมีคุณสมบัติ ที่สอดคล้องกัน ในคลาส พร้อมด้วย การใช้งาน ตัวแก้ไข PowerShell จะเรียกใช้ตัวแก้ไขด้วยค่าพารามิเตอร์หรืออินพุตจากไปป์ไลน์ ซึ่งจะถูกบันทึกโดยการใช้งานตัวแก้ไขในตัวแปรคลาส จากนั้นค่าเหล่านี้จะถูกอ้างอิงโดยเมธอดที่ใช้งานฟังก์ชัน คุณสมบัติที่แมปกับพารามิเตอร์บรรทัดคำสั่งจะถูกทำเครื่องหมายด้วยParameterAttribute[ 39 ]และตั้งค่าก่อนการเรียกใช้ คุณสมบัติที่ BeginProcessing()แมปกับอินพุตจากไปป์ไลน์จะถูกล้อมรอบด้วยเช่นกันParameterAttributeแต่มีValueFromPipelineการตั้งค่าแอตทริบิวต์พารามิเตอร์[ 40 ]

cmdlet สามารถใช้API ของ.NET ใดก็ได้ และอาจเขียนด้วยภาษา .NET ใดก็ได้ นอกจากนี้ PowerShell ยังมี API บางอย่างให้ใช้งาน เช่นซึ่งใช้ในการเข้าถึงฟังก์ชันเฉพาะของ PowerShell เช่น การเขียนอ็อบเจ็กต์ไปยังไปป์ไลน์ cmdlet สามารถใช้API การเข้าถึงข้อมูลของ .NET โดยตรง หรือใช้โครงสร้างพื้นฐานของProviders ของ PowerShell ซึ่งทำให้สามารถเข้าถึงที่เก็บข้อมูลได้โดยใช้เส้นทาง ที่ไม่ซ้ำกัน ที่เก็บข้อมูลจะถูกเปิดเผยโดยใช้ตัวอักษรไดรฟ์และลำดับชั้นภายใน ซึ่งระบุเป็นไดเร็กทอรี PowerShell มาพร้อมกับ providers สำหรับระบบไฟล์รีจิสทรีที่ เก็บ ใบรับรองรวมถึงเนมสเปซสำหรับนามแฝงคำสั่ง ตัวแปร และฟังก์ชัน[ 41 ] PowerShell ยังมี cmdlet ต่างๆ สำหรับการจัดการ ระบบ Windows ต่างๆ รวมถึงระบบไฟล์ หรือใช้Windows Management Instrumentationเพื่อควบคุมส่วนประกอบของ Windowsแอปพลิเคชันอื่นๆ สามารถลงทะเบียน cmdlet กับ PowerShell ได้ ทำให้สามารถจัดการได้ และหากแอปพลิเคชันเหล่านั้นมีที่เก็บข้อมูลใดๆ (เช่น ฐานข้อมูล) ก็สามารถเพิ่ม providers เฉพาะได้เช่นกัน WriteObject()

สามารถเพิ่ม cmdlet ลงในเชลล์ได้ผ่านโมดูลหรือ snap-in รุ่นก่อน v2 ผู้ใช้ไม่ได้ถูกจำกัดอยู่แค่ cmdlet ที่รวมอยู่ใน PowerShell เวอร์ชันพื้นฐานเท่านั้น

จำนวน cmdlet ที่รวมอยู่ในชุดติดตั้ง PowerShell พื้นฐานสำหรับเวอร์ชันต่างๆ:

  • Windows PowerShell 1.0: 129 [ 42 ]
  • Windows PowerShell 2.0: 632 [ 43 ]
  • Windows PowerShell 3.0: ≈1,000 [ 44 ]
  • Windows PowerShell 5.0: ≈1,300 [ 45 ]
  • Windows PowerShell 5.1: 1,586
  • PowerShell 7.0: 1,507
  • PowerShell 7.4: 1,656

ท่อส่ง

เพื่อเปิดใช้งานความหมายของไปป์ไลน์ คล้ายกับไปป์ไลน์ของ Unix cmdlet จะรับอินพุตและส่งผลลัพธ์เป็นอ็อบเจ็กต์ หาก cmdlet ส่งอ็อบเจ็กต์หลายรายการ อ็อบเจ็กต์แต่ละรายการในคอลเลกชันจะถูกส่งผ่านไปป์ไลน์ก่อนที่จะประมวลผลอ็อบเจ็กต์ถัดไป[ 35 ]ไปป์ไลน์ของ PowerShell ช่วยให้สามารถใช้ตรรกะที่ซับซ้อนโดยใช้ตัวดำเนินการ pipe ( ) เพื่อเชื่อมต่อขั้นตอนต่างๆ อย่างไรก็ตาม ไปป์ไลน์ของ PowerShell แตกต่างจากไปป์ไลน์ของ Unix ตรงที่ขั้นตอนต่างๆ จะทำงานภายในรันไทม์ของ PowerShell แทนที่จะเป็นชุดของกระบวนการที่ประสานงานโดยระบบปฏิบัติการนอกจากนี้ อ็อบเจ็กต์ .NET ที่มีโครงสร้าง แทนที่จะเป็นสตรีมไบต์จะถูกส่งผ่านจากขั้นตอนหนึ่งไปยังอีกขั้นตอนหนึ่ง การใช้อ็อบเจ็กต์และการดำเนินการขั้นตอนต่างๆ ภายในรันไทม์ของ PowerShell ช่วยลดความจำเป็นในการทำให้ โครงสร้างข้อมูล เป็นอนุกรมหรือการแยกข้อมูลโดยการแยกวิเคราะห์เอาต์พุตข้อความ อย่างชัดเจน [ 46 ]อ็อบเจ็กต์ยังสามารถห่อหุ้มฟังก์ชันบางอย่างที่ทำงานกับข้อมูลที่บรรจุอยู่ ซึ่งจะพร้อมใช้งานสำหรับคำสั่งผู้รับเพื่อใช้งาน[ 47 ] [ 48 ]สำหรับ cmdlet สุดท้ายใน pipeline นั้น PowerShell จะส่งออบเจ็กต์เอาต์พุตไปยังcmdlet โดยอัตโนมัติ ซึ่งจะแปลงออบเจ็กต์เหล่านั้นให้เป็นสตรีมของออบเจ็กต์รูปแบบ แล้วจึงแสดงผลบนหน้าจอ[ 49 ] [ 50 ]|Out-Default

เนื่องจากอ็อบเจ็กต์ PowerShell เป็นอ็อบเจ็กต์ .NET จึงมี.ToString()เมธอดที่ใช้ในการซีเรียลไลซ์สถานะของอ็อบเจ็กต์ นอกจากนี้ PowerShell ยังอนุญาตให้ระบุคำจำกัดความการจัดรูปแบบได้ ดังนั้นการแสดงข้อความของอ็อบเจ็กต์จึงสามารถปรับแต่งได้โดยการเลือกองค์ประกอบข้อมูลที่จะแสดงและในลักษณะใด อย่างไรก็ตาม เพื่อรักษาความเข้ากันได้กับเวอร์ชันก่อนหน้าหากมีการใช้ไฟล์ปฏิบัติการภายนอกในไปป์ไลน์ ไฟล์นั้นจะได้รับสตรีมข้อความที่แสดงถึงอ็อบเจ็กต์ แทนที่จะผสานรวมโดยตรงกับระบบประเภทของ PowerShell [ 51 ] [ 52 ] [ 53 ]

การเขียนสคริปต์

PowerShell มีภาษาสคริปต์แบบไดนามิก ที่สามารถใช้งานการดำเนินการที่ซับซ้อนโดยใช้ cmdlet ได้อย่างมีประสิทธิภาพภาษาดังกล่าวรองรับตัวแปร ฟังก์ชัน การแตกสาขา ( )ลูป ( , , , และ) การจัดการข้อผิดพลาด/ข้อยกเว้นแบบมีโครงสร้าง และclosures / นิพจน์แลมบ์ดา [ 54 ]รวมถึงการผสานรวมกับ.NET ตัวแปรในสคริปต์ PowerShell จะมีคำนำหน้าด้วย ตัวแปรสามารถกำหนดค่าใดๆ ก็ได้ รวมถึงผลลัพธ์ของ cmdlet สตริงสามารถล้อมรอบด้วยเครื่องหมายอัญประกาศเดี่ยวหรือเครื่องหมายอัญประกาศคู่: เมื่อใช้เครื่องหมายอัญประกาศคู่ ตัวแปรจะถูกขยายแม้ว่าจะอยู่ภายในเครื่องหมายอัญประกาศก็ตาม การล้อมรอบเส้นทางไปยังไฟล์ด้วยวงเล็บปีกกาที่นำหน้าด้วยเครื่องหมายดอลลาร์ (เช่น) ซึ่งเรียกว่าสัญกรณ์ตัวแปรเนมสเปซ จะสร้างการอ้างอิงถึงเนื้อหาของไฟล์ หากใช้เป็นค่า Lสิ่งใดก็ตามที่กำหนดให้กับมันจะถูกเขียนลงในไฟล์ เมื่อใช้เป็นค่า Rเนื้อหาของไฟล์จะถูกอ่าน หากมีการกำหนดวัตถุ วัตถุนั้นจะถูกแปลงเป็นรูปแบบอนุกรมก่อนที่จะจัดเก็บ[ 55 ]if-then-elsewhiledoforforeach$${C:\foo.txt}

สามารถเข้าถึงสมาชิกของอ็อบเจ็กต์ได้โดยใช้.สัญลักษณ์ เช่นเดียวกับไวยากรณ์ C# PowerShell มีตัวแปรพิเศษ เช่น$argsซึ่งเป็นอาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดที่ส่งไปยังฟังก์ชันจากบรรทัดคำสั่ง และ$_ซึ่งอ้างอิงถึงอ็อบเจ็กต์ปัจจุบันในไปป์ไลน์[ 56 ] PowerShell ยังมีอาร์เรย์และอาร์เรย์แบบเชื่อมโยงภาษา PowerShell ยังประเมินนิพจน์ทางคณิตศาสตร์ที่ป้อนในบรรทัดคำสั่งทันที และแยกวิเคราะห์ตัวย่อทั่วไป เช่น GB, MB และ KB [ 57 ] [ 58 ]

PowerShell ใช้functionคีย์เวิร์ดเพื่อสร้างฟังก์ชัน ฟังก์ชันแบบง่ายจะมีลักษณะทั่วไปดังนี้: [ 59 ]

ชื่อฟังก์ชัน( [ประเภท] $Param1 , [ประเภท] $Param2 ) { # คำสั่ง}

อย่างไรก็ตาม PowerShell อนุญาตให้ใช้ฟังก์ชันขั้นสูงที่รองรับพารามิเตอร์แบบระบุชื่อ พารามิเตอร์แบบระบุตำแหน่ง พารามิเตอร์แบบสวิตช์ และพารามิเตอร์แบบไดนามิก[ 59 ]

ฟังก์ชันกริยา-นาม{พาราม(# นิยามของพารามิเตอร์คงที่)ไดนามิกพาราม {# คำจำกัดความของพารามิเตอร์แบบไดนามิก}เริ่ม{# ชุดคำสั่งที่จะทำงานเมื่อเริ่มต้นไปป์ไลน์}กระบวนการ{# ชุดคำสั่งหลักที่ใช้สำหรับแต่ละรายการในไปป์ไลน์}จบ{# ชุดคำสั่งที่จะทำงานเมื่อสิ้นสุดไปป์ไลน์}}

ฟังก์ชันที่กำหนดไว้จะถูกเรียกใช้ในรูปแบบใดรูปแบบหนึ่งต่อไปนี้: [ 59 ]

ชื่อค่า1 ค่า2 คำกริยา-คำนาม - พารามิเตอร์1 ค่า1 -พารามิเตอร์2 ค่า2

PowerShell อนุญาตให้เรียกใช้เมธอด .NET แบบคงที่ใดๆ ก็ได้โดยการระบุเนมสเปซที่อยู่ในวงเล็บ ( []) จากนั้นใช้เครื่องหมายโคลอนคู่ ( ::) เพื่อระบุเมธอดแบบคงที่[ 60 ]ตัวอย่างเช่น:

[คอนโซล] :: เขียนบรรทัด( "PowerShell" )

มีหลายวิธีในการสร้างวัตถุใน PowerShell เมื่อสร้างแล้ว เราสามารถเข้าถึงคุณสมบัติและเมธอดอินสแตนซ์ของวัตถุโดยใช้.สัญลักษณ์[ 60 ]

PowerShell ยอมรับสตริงทั้งแบบดิบและแบบหลีกเลี่ยงสตริงที่อยู่ระหว่างเครื่องหมายอัญประกาศเดี่ยวเป็นสตริงดิบ ในขณะที่สตริงที่อยู่ระหว่างเครื่องหมายอัญประกาศคู่เป็นสตริงแบบหลีกเลี่ยง PowerShell ถือว่าเครื่องหมายอัญประกาศตรงและเครื่องหมายอัญประกาศโค้งนั้นเทียบเท่ากัน[ 61 ]

PowerShell รองรับอักขระพิเศษดังต่อไปนี้: [ 62 ]

อักขระพิเศษของ PowerShell
ลำดับ ความหมาย
0โมฆะ
`aเตือน
`bลบ
`eEscape (ตั้งแต่ PowerShell 6)
`fป้อนแบบฟอร์ม
`nขึ้นบรรทัดใหม่
`rรถกลับ
`tแท็บแนวนอน
`u{x}ลำดับการหลีกเลี่ยงอักขระ ยูนิโค้ด (ตั้งแต่ PowerShell 6)
`vแท็บแนวตั้ง
--%นับจากนี้เป็นต้นไป ให้ปฏิบัติต่อตัวละครทุกตัวตามตัวอักษร

สำหรับการจัดการข้อผิดพลาด PowerShell มีกลไก การจัดการข้อยกเว้นที่ใช้ .NET ในกรณีที่เกิดข้อผิดพลาด วัตถุที่มีข้อมูลเกี่ยวกับข้อผิดพลาด ( Exceptionวัตถุ) จะถูกโยนออกมา ซึ่งจะถูกดักจับโดยใช้try ... catchโครงสร้าง (แม้ว่าtrapจะรองรับโครงสร้างเช่นกัน) PowerShell สามารถกำหนดค่าให้ดำเนินการต่อโดยเงียบๆ โดยไม่ต้องโยนข้อยกเว้นจริงๆ ซึ่งสามารถทำได้กับคำสั่งเดียว เซสชันเดียว หรือตลอดไป[ 63 ]

สคริปต์ที่เขียนโดยใช้ PowerShell สามารถทำให้คงอยู่ข้ามเซสชันได้ทั้งใน.ps1ไฟล์หรือ.psm1ไฟล์ (ไฟล์หลังใช้เพื่อใช้งานโมดูล) ต่อมา สามารถใช้สคริปต์ทั้งหมดหรือฟังก์ชันแต่ละฟังก์ชันในสคริปต์ได้ สคริปต์และฟังก์ชันทำงานในลักษณะเดียวกับ cmdlet กล่าวคือ สามารถใช้เป็นคำสั่งในไปป์ไลน์ และสามารถผูกพารามิเตอร์เข้ากับคำสั่งเหล่านั้นได้ อ็อบเจ็กต์ไปป์ไลน์สามารถส่งผ่านระหว่างฟังก์ชัน สคริปต์ และ cmdlet ได้อย่างราบรื่น เพื่อป้องกันการเรียกใช้สคริปต์โดยไม่ตั้งใจ การเรียกใช้สคริปต์จะถูกปิดใช้งานโดยค่าเริ่มต้นและต้องเปิดใช้งานอย่างชัดเจน[ 64 ]การเปิดใช้งานสคริปต์สามารถทำได้ในระดับระบบ ผู้ใช้ หรือเซสชัน สคริปต์ PowerShell สามารถลงนามเพื่อตรวจสอบความสมบูรณ์ และอยู่ภายใต้ การรักษาความปลอดภัย การเข้าถึงโค้ด[ 65 ]

ภาษา PowerShell รองรับ สัญกรณ์คำนำ หน้าไบนารีที่คล้ายกับสัญกรณ์วิทยาศาสตร์ที่รองรับโดยภาษาโปรแกรมหลายภาษาในตระกูล C [ 66 ]

โฮสติ้ง

นอกจากนี้ยังสามารถใช้ PowerShell ที่ฝังอยู่ในแอปพลิเคชันการจัดการ ซึ่งใช้รันไทม์ของ PowerShell ในการใช้งานฟังก์ชันการจัดการได้ สำหรับการนี้ PowerShell มีAPIสำหรับการโฮสต์แบบจัดการผ่านทาง API แอปพลิเคชันสามารถสร้างอินสแตนซ์ของรันสเปซ (อินสแตนซ์ของรันไทม์ PowerShell หนึ่งรายการ) ซึ่งทำงานในกระบวนการ ของแอปพลิเคชัน และเปิดเผยเป็นอ็อบเจ็กต์[ 8 ]สถานะของรันสเปซจะถูกห่อหุ้มไว้ในอ็อบเจ็กต์เมื่อสร้างรันสเปซ รันไทม์ของ PowerShell จะเริ่มต้นอินสแตนซ์ รวมถึงการเริ่มต้นผู้ให้บริการและแจงนับ cmdlet และอัปเดตอ็อบเจ็กต์ตามนั้น จากนั้นรันสเปซจะต้องเปิดสำหรับการประมวลผลแบบซิงโครนัสหรือการประมวลผลแบบอะซิงโครนัส หลังจากนั้นสามารถใช้เพื่อเรียกใช้คำสั่งได้ RunspaceSessionStateSessionState

ในการเรียกใช้คำสั่งPipelineจะต้องสร้างไปป์ไลน์ (ซึ่งแสดงด้วยออบเจ็กต์) และเชื่อมโยงกับรันสเปซ จากนั้นออบเจ็กต์ไปป์ไลน์จะถูกเติมด้วย cmdlet ที่ประกอบเป็นไปป์ไลน์ สำหรับการดำเนินการตามลำดับ (เช่นในสคริปต์ PowerShell) จะมีการสร้างออบเจ็กต์ Pipeline สำหรับแต่ละคำสั่งและซ้อนอยู่ภายในออบเจ็กต์ Pipeline อื่น[ 8 ]เมื่อสร้างไปป์ไลน์แล้ว PowerShell จะเรียกใช้ตัวประมวลผลไปป์ไลน์ ซึ่งจะแปลง cmdlet เป็นแอสเซมบลี ที่เกี่ยวข้อง ( ตัวประมวลผลคำสั่ง ) และเพิ่มการอ้างอิงไปยังไปป์ไลน์ และเชื่อมโยงกับInputPipeอ อบเจ็กต์ OutputPipeและErrorOutputPipeเพื่อแสดงการเชื่อมต่อกับไปป์ไลน์ ประเภทจะได้รับการตรวจสอบและพารามิเตอร์จะถูกผูกไว้โดยใช้การสะท้อน[ 8 ]เมื่อตั้งค่าไปป์ไลน์แล้ว โฮสต์จะเรียกInvoke()เมธอด เพื่อเรียกใช้คำสั่ง หรือเทียบเท่าแบบอะ ซิงโครนัส InvokeAsync()หากไปป์ไลน์มีWrite-Hostcmdlet ที่ส่วนท้ายของไปป์ไลน์ ผลลัพธ์จะถูกเขียนลงบนหน้าจอคอนโซล หากไม่มี ผลลัพธ์จะถูกส่งต่อไปยังโฮสต์ ซึ่งอาจนำไปประมวลผลเพิ่มเติมหรือแสดงผลลัพธ์เอง

Microsoft Exchange Server 2007 ใช้ API ของโฮสติ้งเพื่อให้บริการ GUI สำหรับการจัดการ แต่ละการดำเนินการที่แสดงใน GUI จะถูกแมปกับลำดับของคำสั่ง PowerShell (หรือไปป์ไลน์) โฮสต์จะสร้างไปป์ไลน์และดำเนินการ ที่จริงแล้ว คอนโซล PowerShell แบบโต้ตอบเองก็เป็นโฮสต์ PowerShell เช่นกัน ซึ่งจะตีความสคริปต์ที่ป้อนในบรรทัดคำสั่ง สร้างPipelineอ็อบเจ็กต์ที่จำเป็น และเรียกใช้งานอ็อบเจ็กต์เหล่านั้น

การกำหนดค่าสถานะที่ต้องการ

DSC อนุญาตให้ระบุวิธีการกำหนดค่าสภาพแวดล้อมซอฟต์แวร์ได้อย่างชัดเจน[ 67 ]

เมื่อทำการกำหนดค่า DSC จะตรวจสอบให้แน่ใจว่าระบบได้รับสถานะตามที่อธิบายไว้ในการกำหนดค่า การกำหนดค่าของ DSC นั้นเป็นแบบไม่เปลี่ยนแปลง (idempotent) ตัวจัดการการกำหนดค่าภายในเครื่อง (LCM) จะตรวจสอบระบบเป็นระยะโดยใช้การไหลของควบคุมที่อธิบายโดยทรัพยากร (ส่วนประกอบที่จำเป็นของ DSC) เพื่อให้แน่ใจว่าสถานะของการกำหนดค่าได้รับการรักษาไว้

เวอร์ชัน

เวอร์ชันหลักทั้งหมดได้รับการสนับสนุนอย่างต่อเนื่อง และแต่ละเวอร์ชันหลักมีคุณสมบัติการใช้งานร่วมกับเวอร์ชันก่อนหน้าได้

โครงการโมนาด

ในระยะแรก PowerShell ใช้ชื่อรหัสว่า "Monad" และถูกเปิดเผยต่อสาธารณะครั้งแรกในงาน Professional Developers Conference ในเดือนตุลาคม ปี 2003 ที่ลอสแอนเจลิส

วินโดวส์ พาวเวอร์เชลล์

1.0

Windows PowerShell เวอร์ชัน 1.0 เปิดตัวในเดือนพฤศจิกายน พ.ศ. 2549 สำหรับWindows XP SP2 , Windows Server 2003 SP1และWindows Vista [ 68 ]และเป็นส่วนประกอบเสริมของWindows Server 2008

2.0

Windows PowerShell ISE เวอร์ชัน 2.0 บนWindows 7คือสภาพแวดล้อมการพัฒนาแบบบูรณาการสำหรับสคริปต์ PowerShell

เวอร์ชัน 2.0 ผสานรวมกับWindows 7และWindows Server 2008 R2 [ 69 ]และวางจำหน่ายสำหรับWindows XPพร้อม Service Pack 3, Windows Server 2003พร้อม Service Pack 2 และWindows Vistaพร้อม Service Pack 1 [ 70 ] [ 71 ]

เวอร์ชันนี้มีการเปลี่ยนแปลงภาษาและ API โฮสติ้ง รวมถึงมีคำสั่ง cmdlet ใหม่มากกว่า 240 รายการ[ 72 ] [ 73 ]

คุณสมบัติใหม่ประกอบด้วย: [ 74 ] [ 75 ] [ 76 ]

  • การเข้าถึงระยะไกล : การใช้WS-Managementช่วยให้สามารถเรียกใช้สคริปต์และ cmdlet บนเครื่องระยะไกลหรือกลุ่มเครื่องระยะไกลจำนวนมากได้
  • งานเบื้องหลัง (Background jobs ): หรือเรียกว่าPSJobซึ่งช่วยให้สามารถเรียกใช้ลำดับคำสั่ง (สคริปต์) หรือไปป์ไลน์แบบอะซิงโครนัสได้ งานเหล่านี้สามารถทำงานบนเครื่องโลคัลหรือบนเครื่องระยะไกลหลายเครื่องก็ได้ cmdlet แบบโต้ตอบใน PSJob จะบล็อกการทำงานของงานจนกว่าผู้ใช้จะป้อนข้อมูล
  • ธุรกรรม : เปิดใช้งาน cmdlet และนักพัฒนาสามารถดำเนินการธุรกรรมได้ ประกอบด้วย cmdlet สำหรับธุรกรรม เช่น การเริ่มต้น การยืนยัน และการยกเลิกPSTransactionรวมถึงคุณสมบัติในการจัดการและกำหนดทิศทางธุรกรรมไปยัง cmdlet และการดำเนินการของผู้ให้บริการที่เกี่ยวข้อง ผู้ให้บริการ PowerShell Registry รองรับธุรกรรม
  • ฟังก์ชันขั้นสูง : เดิมทีเรียกว่า "สคริปต์ cmdlet" ต่อมา cmdlet ที่รวมไว้เหล่านี้ได้รับการเปลี่ยนชื่อเป็น "ฟังก์ชันขั้นสูง" [ 77 ]
  • SteppablePipelines : ฟังก์ชันนี้ช่วยให้ผู้ใช้ควบคุมได้ว่า ฟังก์ชัน BeginProcessing()`add` ProcessRecord()และEndProcessing()`add` ของ cmdlet จะถูกเรียกใช้ เมื่อใด
  • โมดูล : ช่วยให้นักพัฒนาสคริปต์และผู้ดูแลระบบสามารถจัดระเบียบและแบ่งสคริปต์ออกเป็นหน่วยย่อยที่นำกลับมาใช้ใหม่ได้ โค้ดจากโมดูลจะทำงานในบริบทที่แยกเป็นอิสระของตัวเอง และไม่ส่งผลกระทบต่อสถานะภายนอกโมดูล โมดูลสามารถกำหนดสภาพแวดล้อมการทำงานที่จำกัดได้โดยใช้สคริปต์ โมดูลมีสถานะถาวร รวมถึงสมาชิกสาธารณะและส่วนตัว
  • ภาษาข้อมูล : ส่วนย่อยของภาษาที่เฉพาะเจาะจงกับโดเมน ซึ่งช่วยให้สามารถแยกคำจำกัดความของข้อมูลออกจากสคริปต์ และช่วยให้สามารถ นำเข้าทรัพยากรสตริง ที่แปลเป็นภาษาท้องถิ่นลงในสคริปต์ได้ในขณะรันไทม์ ( การทำให้สคริปต์เป็นสากล )
  • การดีบักสคริปต์ : อนุญาต ให้ตั้ง เบรกพอยต์ในสคริปต์หรือฟังก์ชันได้ สามารถตั้งเบรกพอยต์ได้ที่บรรทัด บรรทัดและคอลัมน์ คำสั่ง และการเข้าถึงตัวแปรแบบอ่านหรือเขียน รวมถึงชุดคำสั่ง cmdlet สำหรับควบคุมเบรกพอยต์ผ่านสคริปต์
  • การจัดการเหตุการณ์ (Eventing) : ช่วยให้สามารถรับฟัง ส่งต่อ และดำเนินการกับเหตุการณ์ด้านการจัดการและระบบได้ การจัดการเหตุการณ์ช่วยให้โฮสต์ได้รับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะของเอนทิตีที่ได้รับการจัดการ นอกจากนี้ยังช่วยให้สคริปต์สามารถสมัครรับข้อมูลจากObjectEvents , PSEventsและWmiEventsและประมวลผลเหตุการณ์เหล่านั้นได้ทั้งแบบซิงโครนัสและอะซิงโครนัส
  • สภาพแวดล้อมการเขียนสคริปต์แบบบูรณาการ (ISE) : โฮสต์แบบ GUI ที่มีดีบักเกอร์ ในตัว การเน้นไวยากรณ์ การเติมข้อความ อัตโนมัติ และคอนโซลที่รองรับ Unicode ได้สูงสุด 8 คอนโซล (Runspaces) ใน UI แบบแท็บ รวมถึงความสามารถในการเรียกใช้เฉพาะส่วนที่เลือกในสคริปต์เท่านั้น
  • การถ่ายโอนไฟล์ผ่านเครือข่าย : รองรับการถ่ายโอนไฟล์ระหว่างเครื่องที่มีลำดับความสำคัญ จำกัดความเร็ว และแบบอะซิงโครนัสโดยใช้Background Intelligent Transfer Service (BITS) [ 78 ]
  • cmdlet ใหม่ : รวมถึง คำสั่ง Out-GridViewที่แสดงข้อมูลในรูปแบบตารางใน ออบเจ็กต์ WPF GridViewบนระบบที่รองรับ และหากติดตั้งและเปิดใช้งาน ISE แล้ว
  • ตัวดำเนินการใหม่ : -Split, -Join, และ@ตัวดำเนินการ Splatting ( )
  • การจัดการข้อยกเว้นด้วย Try-Catch-Finally : แตกต่างจากภาษา .NET อื่นๆ วิธีนี้อนุญาตให้ใช้ข้อยกเว้นหลายประเภทในบล็อก catch เดียวได้
  • Here-Strings ที่ซ้อนกันได้ : Here-Stringsได้รับการปรับปรุงและสามารถซ้อนกันได้แล้ว[ 79 ]
  • ความคิดเห็นแบบบล็อก : รองรับความคิดเห็นแบบบล็อกโดยใช้<#และ#>เป็นตัวคั่น[ 80 ]
  • API ใหม่ : API ใหม่เหล่านี้มีตั้งแต่การมอบการควบคุมเพิ่มเติมให้กับโฮสต์เกี่ยวกับตัวแยกวิเคราะห์และรันไทม์ ไปจนถึงการสร้างและจัดการคอลเลกชันของ Runspace ( RunspacePools) รวมถึงความสามารถในการสร้างRestricted Runspaceซึ่งอนุญาตให้เรียกใช้เฉพาะส่วนย่อยที่กำหนดค่าไว้ของ PowerShell เท่านั้น API ใหม่เหล่านี้ยังรองรับการมีส่วนร่วมในธุรกรรมด้วย

3.0

เวอร์ชัน 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 [ 81 ] [ 82 ]

เวอร์ชัน 3.0 เป็นส่วนหนึ่งของแพ็กเกจขนาดใหญ่ Windows Management Framework 3.0 (WMF3) ซึ่งประกอบด้วย บริการ WinRMเพื่อรองรับการเข้าถึงระยะไกล[ 82 ] Microsoft ได้เผยแพร่ WMF3 เวอร์ชัน Community Technology Preview หลาย เวอร์ชัน เวอร์ชัน Community Technology Preview 2 (CTP 2) แรกของ Windows Management Framework 3.0 ได้รับการเผยแพร่เมื่อวันที่ 2 ธันวาคม 2011 [ 83 ] Windows Management Framework 3.0 ได้รับการเผยแพร่ให้ใช้งานได้ทั่วไปในเดือนธันวาคม 2012 [ 84 ]และรวมอยู่ใน Windows 8 และ Windows Server 2012 โดยค่าเริ่มต้น[ 85 ]

คุณสมบัติใหม่ประกอบด้วย: [ 82 ] [ 86 ] : 33–34

  • งานที่กำหนดเวลาไว้ : สามารถกำหนดเวลาให้งานทำงานตามเวลาและวันที่กำหนดไว้ล่วงหน้าได้ โดยใช้ ระบบ กำหนดเวลาทำงานของ Windows (Windows Task Scheduler )
  • การเชื่อมต่อเซสชัน : เซสชันสามารถตัดการเชื่อมต่อและเชื่อมต่อใหม่ได้ เซสชันระยะไกลมีความทนทานต่อความล้มเหลวของเครือข่ายชั่วคราวมากขึ้น
  • การเขียนโค้ดที่ดีขึ้น : เพิ่มฟังก์ชัน การเติมโค้ดอัตโนมัติ (IntelliSense) และตัวอย่างโค้ด ISE อนุญาตให้ผู้ใช้ใช้กล่องโต้ตอบเพื่อกรอกพารามิเตอร์สำหรับ cmdlet ได้
  • การสนับสนุนการมอบหมายงาน : สามารถมอบหมายงานด้านการบริหารให้กับผู้ใช้ที่ไม่มีสิทธิ์ในงานประเภทนั้นได้ โดยไม่ต้องให้สิทธิ์เพิ่มเติมแบบถาวรแก่ผู้ใช้เหล่านั้น
  • อัปเดตเอกสารช่วยเหลือ : สามารถอัปเดตเอกสารช่วยเหลือได้โดยใช้คำสั่ง Update-Help
  • การตรวจจับโมดูลอัตโนมัติ : โมดูลจะถูกโหลดโดยอัตโนมัติทุกครั้งที่มีการเรียกใช้คำสั่งจากโมดูลนั้น ฟังก์ชันการเติมโค้ดอัตโนมัติจะทำงานได้แม้กับโมดูลที่ยังไม่ได้โหลดก็ตาม
  • คำสั่งใหม่ : มีการเพิ่มโมดูลใหม่หลายสิบโมดูล รวมถึงฟังก์ชันการจัดการดิสก์get-WmiObject win32_logicaldiskวอลุ่ม ไฟร์วอลล์ การเชื่อมต่อเครือข่าย และเครื่องพิมพ์ ซึ่งก่อนหน้านี้ต้องดำเนินการผ่าน WMI

4.0

เวอร์ชัน 4.0 ผสานรวมกับWindows 8.1 , Windows Server 2012 R2 , Windows 7 SP1 , Windows Server 2008 R2 SP1 และWindows Server 2012 [ 87 ]

คุณสมบัติใหม่ประกอบด้วย:

  • การกำหนดค่าสถานะที่ต้องการ : [ 88 ] [ 89 ] [ 90 ]ส่วนขยายภาษาประกาศและเครื่องมือที่ช่วยให้การปรับใช้และการจัดการข้อมูลการกำหนดค่าสำหรับระบบที่ใช้ มาตรฐานการจัดการ DMTFและโปรโตคอลการจัดการ WS
  • นโยบายการเรียกใช้งานเริ่มต้นใหม่ : บน Windows Server นโยบายการเรียกใช้งานเริ่มต้นคือRemoteSigned.
  • บันทึกความช่วยเหลือ : ขณะนี้สามารถบันทึกความช่วยเหลือสำหรับโมดูลที่ติดตั้งบนคอมพิวเตอร์ระยะไกลได้แล้ว
  • การดีบักที่ได้รับการปรับปรุง : ตอนนี้ ดีบักเกอร์รองรับการดีบักเวิร์กโฟลว์ การเรียกใช้สคริปต์จากระยะไกล และการรักษาสถานะการดีบักไว้ระหว่างการเชื่อมต่อเซสชันใหม่
  • -สวิตช์ PipelineVariable : พารามิเตอร์ใหม่ที่ใช้งานได้ทั่วไป เพื่อเปิดเผยอ็อบเจ็กต์ไปป์ไลน์ปัจจุบันเป็นตัวแปรสำหรับการเขียนโปรแกรม
  • เครื่องมือวินิจฉัยเครือข่าย เพื่อจัดการ สวิตช์เครือข่ายทั้งแบบกายภาพและแบบเสมือนของHyper-V
  • ไวยากรณ์ของเมธอด`where` และ `ForEach` เป็นอีกวิธีหนึ่งในการกรองและวนซ้ำวัตถุต่างๆ

5.0

ไอคอนเวอร์ชัน 5.0

เวอร์ชัน 5.0 ได้รับการเผยแพร่อีกครั้งพร้อมกับ Windows Management Framework (WMF) 5.0 เมื่อวันที่ 24 กุมภาพันธ์ 2559 หลังจากการเผยแพร่ครั้งแรกที่มีข้อบกพร่องร้ายแรง[ 91 ]

คุณสมบัติหลักประกอบด้วย:

  • classคีย์เวิร์ดใหม่ที่ใช้สร้างคลาสสำหรับการเขียนโปรแกรมเชิงวัตถุ
  • คีย์เวิร์ด ใหม่enumที่ใช้สร้างenum
  • OneGetcmdlet เพื่อรองรับตัวจัดการแพ็กเกจ Chocolatey [ 92 ]
  • ขยายการสนับสนุนการจัดการสวิตช์ไปยังสวิตช์เครือข่ายเลเยอร์ 2 [ 93 ]
  • การดีบักสำหรับงานเบื้องหลังและอินสแตนซ์ที่ทำงานอยู่ในกระบวนการอื่น (แต่ละกระบวนการเรียกว่า "runspace")
  • การกำหนดค่าสถานะที่ต้องการ (Desired State Configuration: DSC) ตัวจัดการการกำหนดค่าภายในเครื่อง (Local Configuration Manager: LCM) เวอร์ชัน 2.0
  • การกำหนดค่าบางส่วนของ DSC
  • เมตาคอนฟิกูเรชันของ DSC Local Configuration Manager
  • การสร้างทรัพยากร DSC โดยใช้คลาส
5.1

เวอร์ชัน 5.1 ได้รับการเผยแพร่พร้อมกับการอัปเดต Windows 10 Anniversary Update [ 94 ]ในวันที่ 2 สิงหาคม 2016 และในWindows Server 2016 [ 95 ] PackageManagementรองรับพร็อกซีแล้ว PSReadLine รองรับ ViMode แล้ว และมีการเพิ่ม cmdlet ใหม่สองรายการ ได้แก่ Get-TimeZone และ Set-TimeZone โมดูล LocalAccounts อนุญาตให้เพิ่ม/ลบบัญชีผู้ใช้ในเครื่องได้[ 96 ]เวอร์ชันพรีวิวได้รับการเผยแพร่สำหรับ Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012 และ Windows Server 2012 R2 ในวันที่ 16 กรกฎาคม 2016 [ 97 ]และได้รับการเผยแพร่ในวันที่ 19 มกราคม 2017 [ 98 ]

เวอร์ชัน 5.1 เป็นเวอร์ชันแรกที่มีให้เลือกสองรุ่นคือ "เดสก์ท็อป" และ "คอร์" รุ่น "เดสก์ท็อป" เป็นผลิตภัณฑ์ต่อเนื่องที่ใช้ .NET Framework และรุ่น "คอร์" ทำงานบน .NET Core และรวมอยู่ใน Windows Server 2016 Nano Server เพื่อแลกกับขนาดไฟล์ที่เล็กกว่า รุ่นหลังจึงขาดคุณสมบัติบางอย่าง เช่น cmdlet สำหรับจัดการคลิปบอร์ดหรือเชื่อมต่อคอมพิวเตอร์เข้ากับโดเมน cmdlet WMI เวอร์ชัน 1 cmdlet บันทึกเหตุการณ์ และโปรไฟล์[ 25 ]นี่เป็นเวอร์ชันสุดท้ายสำหรับ Windows โดยเฉพาะ เวอร์ชัน 5.1 ยังคงติดตั้งไว้ล่วงหน้าใน Windows 10, Windows 11 และ Windows Server 2022 ในขณะที่เวอร์ชัน .NET ต้องติดตั้งแยกต่างหากและสามารถทำงานควบคู่ไปกับเวอร์ชัน .NET Framework ได้[ 99 ] [ 100 ]

แกนหลักของพาวเวอร์เชลล์

6.0

เปลี่ยนชื่อเป็น PowerShell Core เวอร์ชัน 6.0 ได้รับการประกาศครั้งแรกเมื่อวันที่ 18 สิงหาคม 2559 เมื่อ Microsoft เปิดเผยการตัดสินใจที่จะทำให้ผลิตภัณฑ์นี้ ใช้ งานได้หลายแพลตฟอร์มไม่ขึ้นอยู่กับ Windows ฟรี และเป็นโอเพนซอร์ส[ 5 ]เปิดให้ใช้งานทั่วไปเมื่อวันที่ 10 มกราคม 2561 สำหรับ Windows, macOSและLinux [ 101 ] มีวงจรการสนับสนุนของตัวเองและปฏิบัติตามนโยบายวงจรชีวิตของ Microsoft ที่นำมาใช้กับ Windows 10: เฉพาะ PowerShell Core เวอร์ชันล่าสุดเท่านั้นที่จะได้รับการสนับสนุน Microsoft คาดว่าจะออกเวอร์ชันย่อยสำหรับ PowerShell Core 6.0 ทุก ๆ หกเดือน[ 102 ]

การเปลี่ยนแปลงที่สำคัญที่สุดในเวอร์ชันนี้คือการขยายไปยังแพลตฟอร์มอื่น สำหรับผู้ดูแลระบบ Windows เวอร์ชันนี้ไม่ได้รวมคุณสมบัติใหม่ที่สำคัญใดๆ ในการสัมภาษณ์กับชุมชนเมื่อวันที่ 11 มกราคม 2018 ทีมพัฒนาถูกขอให้ระบุ 10 สิ่งที่น่าตื่นเต้นที่สุดที่จะเกิดขึ้นสำหรับผู้เชี่ยวชาญด้านไอทีของ Windows ที่จะย้ายจากเวอร์ชัน 5.1 ไปยังเวอร์ชัน 6.0 ในการตอบสนอง Angel Calvo จาก Microsoft สามารถระบุได้เพียงสองอย่างเท่านั้น ได้แก่ การใช้งานข้ามแพลตฟอร์มและโอเพนซอร์ส[ 103 ] PowerShell 6 เปลี่ยนไปใช้UTF-8เป็นการเข้ารหัสเริ่มต้น โดยมีข้อยกเว้นบางประการ[ 104 ] (เวอร์ชัน 7.4 เปลี่ยนไปใช้ UTF-8 มากขึ้น) [ 105 ]

6.1

ตามที่ Microsoft ระบุ หนึ่งในคุณสมบัติใหม่ของเวอร์ชัน 6.1 คือ "ความเข้ากันได้กับ cmdlet ที่มีอยู่มากกว่า 1900 รายการใน Windows 10 และWindows Server 2019 " [ 106 ]อย่างไรก็ตาม ไม่พบรายละเอียดของ cmdlet เหล่านี้ในบันทึกการเปลี่ยนแปลงฉบับเต็ม[ 107 ]ต่อมา Microsoft อ้างว่าจำนวนนี้ไม่เพียงพอ เนื่องจาก PowerShell Core ไม่สามารถแทนที่ Windows PowerShell 5.1 และไม่ได้รับความนิยมบน Windows [ 108 ]อย่างไรก็ตาม มันได้รับความนิยมบน Linux [ 108 ]

6.2

เวอร์ชัน 6.2 มุ่งเน้นไปที่การปรับปรุงประสิทธิภาพ การแก้ไขข้อบกพร่อง และการปรับปรุง cmdlet และภาษาขนาดเล็กที่ช่วยเพิ่มประสิทธิภาพการทำงานของนักพัฒนาเป็นหลัก[ 109 ]

พาวเวอร์เชลล์

7.0

เปลี่ยนชื่อเป็น PowerShell เวอร์ชัน 7 แทนที่สายผลิตภัณฑ์ก่อนหน้า ได้แก่ PowerShell Core และ Windows PowerShell [ 110 ] [ 108 ]จุดมุ่งหมายในการพัฒนาคือการทำให้เวอร์ชัน 7 สามารถใช้แทนเวอร์ชัน 5.1 ได้ กล่าวคือ มีความเข้ากันได้กับโมดูลที่มาพร้อมกับ Windows ในระดับใกล้เคียงกัน[ 111 ]

คุณสมบัติใหม่ประกอบด้วย: [ 112 ]

  • ตัว-ParallelเลือกสำหรับForEach-Objectcmdlet เพื่อช่วยจัดการการประมวลผลแบบขนาน
  • มุมมองข้อผิดพลาดใหม่
  • คำGet-Errorสั่ง cmdlet
  • ตัวดำเนินการเชื่อมโยงไปป์ไลน์ ( &&และ||) ที่อนุญาตให้ดำเนินการคำสั่ง cmdlet ถัดไปในไปป์ไลน์แบบมีเงื่อนไข
  • ตัว ดำเนินการ ?:สำหรับการดำเนินการแบบไตรภาค
  • ตัว??ดำเนินการสำหรับการรวมศูนย์
  • ตัว??=ดำเนินการสำหรับการกำหนดค่าการรวมค่าว่าง
  • ข้ามแพลตฟอร์มInvoke-DscResource(ทดลอง)
  • การส่งคืนOut-GridViewcmdlet
  • การส่งคืน-ShowWindowสวิตช์สำหรับGet-Help
7.2

เวอร์ชัน 7.2 เป็นเวอร์ชันสนับสนุนระยะยาวถัดไปหลังจากเวอร์ชัน 7.0 โดยใช้ .NET 6.0 และมีแพ็คเกจตัวติดตั้งแบบสากลสำหรับ Linux บน Windows การอัปเดตเป็นเวอร์ชัน 7.2 และเวอร์ชันที่ใหม่กว่าจะมาผ่าน บริการ Microsoft Updateซึ่งฟีเจอร์นี้ไม่มีในเวอร์ชัน 6.0 ถึง 7.1 [ 113 ]

7.3

เวอร์ชัน 7.3 ประกอบด้วยการอัปเดตและแก้ไข Cmdlet ทั่วไปบางส่วน การทดสอบแพ็คเกจที่ขึ้นอยู่กับเฟรมเวิร์กในขั้นตอนการเผยแพร่ รวมถึงการปรับปรุงการสร้างและการบรรจุ[ 114 ]

7.4

เวอร์ชัน 7.4 ใช้ .NET 8 เป็นพื้นฐานและถือเป็นเวอร์ชันที่รองรับระยะยาว (LTS) [ 115 ]

การเปลี่ยนแปลงประกอบด้วย: [ 116 ]

  • โดยค่าเริ่มต้น webcmdlet จะใช้การเข้ารหัสUTF-8 (เปลี่ยนจากASCII ซึ่ง เป็นซูเปอร์เซ็ตของ ISO-8859-1ที่ไม่รองรับUnicode ) ก่อนหน้านี้ UTF-8 ถูกใช้เป็นค่าเริ่มต้นสำหรับบางอย่าง แต่ไม่ใช่ทั้งหมด
7.5

เวอร์ชัน 7.5 เป็นเวอร์ชันเสถียรล่าสุดที่วางจำหน่ายในเดือนมกราคม 2025 โดยสร้างขึ้นบน .NET 9.0.1 ประกอบด้วยการปรับปรุงด้านประสิทธิภาพ การใช้งาน และความปลอดภัย[ 117 ]การอัปเดตที่สำคัญ ได้แก่ การปรับปรุงการเติมข้อความอัตโนมัติ เช่น การอนุมานประเภทที่ดีขึ้น และตัวเติมอาร์กิวเมนต์ใหม่ รวมถึงการแก้ไขสำหรับ Invoke-WebRequest และ Invoke-RestMethod เวอร์ชันนี้ยังเพิ่ม cmdlet ConvertTo-CliXml และ ConvertFrom-CliXml ใหม่ และอัปเดตโมดูลหลัก เช่น PSReadLine และ Microsoft.PowerShell.PSResourceGet การเปลี่ยนแปลงที่สำคัญ ได้แก่ การอัปเดตการจัดการพารามิเตอร์ Test-Path และการตั้งค่าเริ่มต้นสำหรับ New-FileCatalog

ก่อนการเปิดตัว GA มีการเปิดตัวเวอร์ชันพรีวิว 5 ครั้งและเวอร์ชัน RC 1 ครั้งของ PowerShell v7.5.0 [ 118 ]โดยคาดว่าจะมีการเผยแพร่บทความบล็อกฉบับเต็มสำหรับเวอร์ชันนี้ในเร็วๆ นี้

7.6

เวอร์ชัน 7.6 ใช้ .NET 9 และเป็นเวอร์ชันล่าสุด เผยแพร่เมื่อวันที่ 17 มีนาคม พ.ศ. 2569 [ 119 ]

การเปลี่ยนแปลงต่างๆ ได้แก่:

  • การอัปเดตและการแก้ไข cmdlet ทั่วไป
  • อัปเดตไฟล์ manifest ของทรัพยากร DSC ของ PowerShell Profile เพื่ออนุญาตให้ใส่ค่าว่างสำหรับเนื้อหา
  • เพิ่มคำอธิบายประกอบ GitHub Actions สำหรับความล้มเหลวของการทดสอบ Pester
  • แก้ไข Import-Module.Tests.ps1 เพื่อรองรับแพลตฟอร์ม Arm32 [ 120 ]

การเปรียบเทียบ cmdlet ที่มีคำสั่งคล้ายกัน

ตารางต่อไปนี้ประกอบด้วย cmdlet ต่างๆ ที่มาพร้อมกับ PowerShell ซึ่งมีฟังก์ชันการทำงานคล้ายคลึงกับคำสั่งในเชลล์อื่นๆ อย่างเห็นได้ชัด cmdlet เหล่านี้จำนวนมากถูกเปิดเผยให้ผู้ใช้เห็นผ่านนามแฝงที่กำหนดไว้ล่วงหน้า เพื่อให้ผู้ใช้เชลล์อื่นๆ สามารถใช้งานได้อย่างคุ้นเคย

การเปรียบเทียบ cmdlet กับคำสั่งของเชลล์อื่นๆ
คำสั่ง ชื่อเรียกแทนที่ กำหนดไว้ล่วงหน้าคำ สั่งพร้อมท์คำสั่ง เชลล์ Unixฟังก์ชันการทำงาน
เคลียร์โฮสต์[ a ]cls , clearคลาสชัดเจนล้างหน้าจอ
เปรียบเทียบวัตถุเปรียบเทียบ, ความแตกต่างเอฟซีความแตกต่างเปรียบเทียบเนื้อหาของไฟล์สองไฟล์
คัดลอกรายการcpi , copy , cpสำเนาซีพีคัดลอกไฟล์และโฟลเดอร์
รับรายการย่อยgci, dir, ls [ b ]ผู้กำกับlsแสดงรายการไฟล์และโฟลเดอร์
คำสั่งรับจีซีเอ็มช่วยด้วยที่ไหนประเภทซึ่งคอมเจนแสดงรายการคำสั่งที่มีอยู่และรับเส้นทางของคำสั่ง
รับข้อมูลคอมพิวเตอร์จิน ข้อมูลระบบอูนาเมะ -เอดึงข้อมูลระบบ
รับเนื้อหาจีซี , ประเภท , แมวพิมพ์แมวรายงานเนื้อหาของไฟล์
หาคู่เดทวันที่ +เวลาวันที่วันที่และเวลาของรายงาน
ขอความช่วยเหลือช่วยด้วยครับ[ c ]ช่วยเหมาะสมแล้วครับ /ค่ะรายงานเอกสารประกอบของคำสั่ง
เรียกดูประวัติghy , h , ประวัติศาสตร์ดอสกี้ /ประวัติfc -l ,ประวัติ[ d ]แสดงรายการคำสั่งก่อนหน้า
รับตำแหน่งที่ตั้งgl , pwdซีดีพีดับบลิวดีรายงานไดเร็กทอรีการทำงาน
รับกระบวนการจีพีเอส , พีเอสรายการงาน [ e ] รายการงาน[ f ]psรายงานกระบวนการทำงาน
เรียกใช้ WebRequestiwr , curl , wget [ g ]curl [ 121 ]wget , curlดาวน์โหลดเนื้อหาจากอินเทอร์เน็ต
การวัดและสั่งการไม่มีข้อมูลไม่มีข้อมูลเวลา (ยูนิก)รายงานนี้แสดงเวลาที่ใช้ไปในโลกแห่งความเป็นจริงในการดำเนินการคำสั่งต่อไปนี้
วัดวัตถุวัดไม่มีข้อมูลห้องสุขานับจำนวนตัวอักษร คำ และบรรทัดของข้อความ PowerShell เพิ่มสรุปคุณสมบัติเชิงตัวเลขของวัตถุ
ย้ายสิ่งของmi , move , mvเคลื่อนไหวเอ็มวีย้ายไฟล์และโฟลเดอร์
ตำแหน่งป๊อปป๊อปป๊อปป๊อปคืนค่าไดเร็กทอรีการทำงานกลับไปยังพาธที่พุชครั้งล่าสุด
พุช-โลเคชั่นพุชด์พุชด์พุชด์ผลักดันเส้นทางไดเร็กทอรีการทำงานและเปลี่ยนไดเร็กทอรีการทำงาน
รีด-โฮสต์ตั้งค่า /Pอ่านอ่านค่าที่ป้อนจากบรรทัดคำสั่งลงในตัวแปร
ลบรายการri , del , ลบ , rmdir , rd , rmลบ , ​​ลบไฟล์ ,ลบโฟลเดอร์ ,เรียกใช้rm , rmdirลบไฟล์หรือโฟลเดอร์
เปลี่ยนชื่อรายการอาร์นีเรนเรนเปลี่ยนชื่อเอ็มวีเปลี่ยนชื่อไฟล์หรือโฟลเดอร์
ลงทะเบียนงานที่กำหนดไว้ไม่มีข้อมูลที่ , schtasks [ 122 ]ที่ , ครอนกำหนดเวลาให้งานต่างๆ ทำงานในเวลาที่แตกต่างกัน
เลือกสตริงสลสค้นหา ,ค้นหาstrเกรปรายงานบรรทัดในไฟล์ที่ตรงกับรูปแบบที่กำหนด
กำหนดวันที่วันที่ +เวลาวันที่ -sรีเซ็ตวันที่และเวลา
สถานที่ตั้งค่าsl , cd , chdirซีดี , chdirซีดีเปลี่ยนเส้นทางการทำงาน
ตั้งค่าตัวแปรsv , setชุดสภาพแวดล้อม , ส่งออก , ตั้งค่า , ตั้งค่าสภาพแวดล้อมสร้างหรือแก้ไขเนื้อหาของตัวแปรสภาพแวดล้อม
เรียงลำดับวัตถุเรียงลำดับเรียงลำดับเรียงลำดับคำสั่งนี้ใช้สำหรับเรียงลำดับบรรทัดของข้อความ และยังสามารถเรียงลำดับวัตถุได้ด้วย
เริ่ม-นอนหลับนอนนอนหมดเวลา[ชั่วโมง]หยุดกระบวนการปัจจุบันชั่วคราวตามระยะเวลาที่กำหนด
หยุดกระบวนการspps , ฆ่าฆ่า[ e ] taskkill [ f ]ฆ่า[ i ]หยุดกระบวนการที่กำลังทำงานอยู่
ที-ออบเจ็กต์ทีไม่มีข้อมูลทีท่อส่งข้อมูลเข้าไปยังไฟล์หรือตัวแปร โดยส่งข้อมูลนั้นไปตามท่อส่งข้อมูลนั้น
การทดสอบการเชื่อมต่อปิงปิงปิงส่งคำขอ ICMP echoไปยังเครื่องระยะไกล
เขียนเอาต์พุตสะท้อนเขียนเสียงสะท้อนเสียงสะท้อนเขียนข้อความไปยังเอาต์พุตมาตรฐาน

หมายเหตุ

  1. ^ถูกนำมาใช้ในรูปแบบฟังก์ชันที่กำหนดไว้ล่วงหน้า
  2. ^lsไม่มีอยู่ใน PowerShell Core เวอร์ชัน Linux
  3. ^manไม่มีอยู่ใน PowerShell Core เวอร์ชัน Linux
  4. ' ^คำสั่ง fcถูกกำหนดไว้ในมาตรฐาน POSIX แต่คำสั่ง historyไม่ได้ถูกกำหนดไว้ อย่างไรก็ตาม ระบบปฏิบัติการ Unix ส่วนใหญ่ก็กำหนดคำสั่งhistoryไว้ ด้วยเช่นกัน
  5. ^ a bมีให้ใช้งานในWindows NT 4 , Windows 98 Resource Kitและ Windows 2000 Support Tools
  6. ^ a bเปิดตัวใน Windows XP Professional Edition
  7. ^curlและwgetไม่มีอยู่ใน PowerShell Core เพื่อไม่ให้รบกวนคำสั่งดั้งเดิมที่มีชื่อคล้ายกัน
  8. ^เฉพาะเชลล์คำสั่งของ Windows เท่านั้น
  9. ^สัญญาณ "Terminate"ยังใช้ใน UNIX เพื่อส่งสัญญาณ ใดๆ ไปยังกระบวนการทำงาน โดยเป็นเพียงสัญญาณเริ่มต้นเท่านั้น

นามสกุลไฟล์

ส่วนขยาย คำอธิบาย
.ps1ไฟล์สคริปต์[ 123 ]
.psd1ไฟล์ manifest ของโมดูล; โดยปกติจะมาพร้อมกับโมดูลสคริปต์หรือโมดูลไบนารี[ 124 ]
.psm1ไฟล์โมดูลสคริปต์[ 125 ]
.ps1xmlไฟล์รูปแบบและคำจำกัดความประเภท[ 53 ] [ 126 ]
.psc1ไฟล์คอนโซล[ 127 ]
.psscไฟล์การกำหนดค่าเซสชัน[ 128 ]
.psrcไฟล์ความสามารถบทบาท[ 129 ]

การสนับสนุนแอปพลิเคชัน

แอปพลิเคชัน เวอร์ชั่น คำสั่ง ผู้ให้บริการ ส่วนติดต่อผู้ใช้สำหรับการจัดการ (Management GUI)
เซิร์ฟเวอร์ Exchange2007 402 ใช่ ใช่
เซิร์ฟเวอร์ Windows2008ใช่ ใช่ เลขที่
ไมโครซอฟต์ SQL Server2008 ใช่ ใช่ เลขที่
ไมโครซอฟต์ แชร์พอร์ต2010 ใช่ ใช่ เลขที่
ตัวจัดการการกำหนดค่าศูนย์ระบบ2012 R2 400+ ใช่ เลขที่
ผู้จัดการฝ่ายปฏิบัติการศูนย์ระบบ2007 74 ใช่ เลขที่
ตัวจัดการเครื่องเสมือน System Center2007 ใช่ ใช่ ใช่
ตัวจัดการการปกป้องข้อมูล System Center2007 ใช่ เลขที่ เลขที่
เซิร์ฟเวอร์คลัสเตอร์ประมวลผล Windows2007 ใช่ ใช่ เลขที่
Microsoft Transporter Suite สำหรับLotus Domino [ 130 ]08.02.0012 47 เลขที่ เลขที่
Microsoft PowerTools สำหรับOpen XML [ 131 ]1.0 33 เลขที่ เลขที่
IBM WebSphere MQ [ 132 ]6.0.2.2 44 เลขที่ เลขที่
ส่วนเสริมหลักของ IoT [ 133 ]74 ไม่ทราบ ไม่ทราบ
Quest Management Shell สำหรับ Active Directory [ 134 ]1.7 95 เลขที่ เลขที่
ซอฟต์แวร์ปฏิบัติการพิเศษ คำสั่งปฏิบัติการพิเศษ[ 135 ]1.0 ใช่ เลขที่ ใช่
VMware vSphere PowerCLI [ 136 ]6.5 R1 500+ ใช่ ใช่
บริการข้อมูลอินเทอร์เน็ต[ 137 ]7.0 54 ใช่ เลขที่
ศูนย์แก้ไขปัญหาWindows 7 [ 138 ]6.1 ใช่ เลขที่ ใช่
ชุดเครื่องมือการปรับใช้ของ Microsoft [ 139 ]2010 ใช่ ใช่ ใช่
ชุดเครื่องมือ NetApp PowerShell [ 140 ] [ 141 ]4.2 2000+ ใช่ ใช่
JAMS Scheduler – ระบบการเข้าถึงและการจัดการงาน[ 142 ]5.0 52 ใช่ ใช่
UIAutomation [ 143 ]0.8 432 เลขที่ เลขที่
Dell Equallogic [ 144 ]3.5 55 เลขที่ เลขที่
LOGINventory [ 145 ]5.8 ใช่ ใช่ ใช่
SePSX [ 146 ]0.4.1 39 เลขที่ เลขที่
สคริปต์รันเนอร์ 7.3 ใช่ ใช่ ใช่

ดูเพิ่มเติม

อ่านเพิ่มเติม

  • ฟิงค์, ดักลาส (2012). Windows PowerShell สำหรับนักพัฒนา . สำนักพิมพ์ O'Reilly Media . ISBN 978-1-4493-2270-0.
  • โฮล์มส์, ลี (2006). คู่มืออ้างอิงฉบับย่อของ Windows PowerShell . O'Reilly Media . ISBN 0-596-52813-2.
  • โฮล์มส์, ลี (2007). คู่มือการใช้งาน Windows PowerShell . O'Reilly Media . ISBN 978-0-596-52849-2.
  • Jones, Don; Hicks, Jeffery (2010). Windows PowerShell 2.0: TFM (ฉบับที่ 3). Sapien Technologies. ISBN 978-0-9821314-2-8.
  • โจนส์, ดอน (2020). เปลือกของแนวคิด: ประวัติศาสตร์ที่ไม่เคยเปิดเผยของ PowerShell . จัดพิมพ์เอง. ISBN 978-1-9536450-3-6.
  • Kopczynski, Tyson; Handley, Pete; Shaw, Marco (2009). Windows PowerShell Unleashed (ฉบับที่ 2). Pearson Education . ISBN 978-0-672-32988-3.
  • Kumaravel, Arul; White, Jon; Naixin Li, Michael; Happell, Scott; Xie, Guohui; Vutukuri, Krishna C. (2008). การเขียนโปรแกรม Windows PowerShell ระดับมืออาชีพ: Snapins, Cmdlets, Hosts และ Providers . สำนักพิมพ์ Wrox . ISBN 978-0-470-17393-0.
  • Oakley, Andy (2005). Monad (AKA PowerShell) . O'Reilly Media . ISBN 0-596-10009-4.
  • วัตต์, แอนดรูว์ (2007). พาวเวอร์เชลล์สำหรับ Windows ระดับมืออาชีพ . สำนักพิมพ์ Wrox . ISBN 978-0-471-94693-9.
  • วิลสัน, เอ็ด (2013). Windows PowerShell 3.0 ทีละขั้นตอน . สำนักพิมพ์ Microsoft . ISBN 978-0-7356-6339-8.
  • วิลสัน, เอ็ด (2014). แนวทางปฏิบัติที่ดีที่สุดสำหรับ Windows PowerShell . สำนักพิมพ์ Microsoft . ISBN 978-0-7356-6649-8.
  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • PowerShellบนGitHub
  • คู่มือการใช้งาน Windows PowerShellฉบับสมบูรณ์ (เก็บถาวรเมื่อวันที่ 15 กันยายน 2012 ที่ Wayback Machineบน TechNet Wiki)
  • Windows Management Framework ถูกเก็บถาวรเมื่อวันที่ 8 มีนาคม 2026 ที่Wayback Machine
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=PowerShell&oldid=1357984434#Cmdlets "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ พาวเวอร์เชลล์

PowerShell เป็น โปรแกรม เชลล์ ที่พัฒนาโดย Microsoft สำหรับการทำงานอัตโนมัติและ การจัดการการกำหนดค่า โดยทั่วไปแล้วเชลล์จะมี ตัวแปล คำสั่ง บรรทัดคำสั่ง สำหรับการใช้งานแบบโต้ตอบ และ...

พื้นหลัง

โปรแกรมเชลล์ รวมถึง PowerShell มีต้นกำเนิดมาจากเชลล์ใน ระบบปฏิบัติการ รุ่นเก่า เช่น MS-DOS และ Xenix ซึ่งเปิดเผยฟังก์ชันการทำงานของระบบให้ผู้ใช้ใช้งานได้เกือบทั้งหมดผ่านทาง อินเทอร์เฟซบรรทัดคำสั่ง (CLI) – แม้ว่า MS-DOS 5 จะมี DOS Shell...

เคอร์มิต

ในช่วงปลายทศวรรษ 1990 อินเทล ได้ขอความช่วยเหลือจากไมโครซอฟต์ในการทำให้ Windows ซึ่งทำงานบนซีพียูของอินเทล เป็นแพลตฟอร์มที่เหมาะสมยิ่งขึ้นในการสนับสนุนการพัฒนาซีพียูของอินเทลในอนาคต ในขณะนั้น การพัฒนาซีพียูของอินเทลดำเนินการบน คอมพิวเตอร์ของ Sun Microsystems...

โมนาด

ในปี 2002 ไมโครซอฟต์ได้เริ่มพัฒนาแนวทางใหม่ในการจัดการบรรทัดคำสั่ง ซึ่งรวมถึง CLI ที่เรียกว่า Monad (หรือที่รู้จักกันในชื่อ Microsoft Shell หรือ MSH) แนวคิดเบื้องหลังได้รับการเผยแพร่ในเดือนสิงหาคม 2002 ในเอกสารไวท์เปเปอร์ที่เรียกว่า "Monad Manifesto" โดย...