PowerShell เป็นกรอบการทำงานสำหรับการทำงานอัตโนมัติและการจัดการการกำหนดค่าที่พัฒนาโดย Microsoft ซึ่งประกอบด้วยเชลล์แบบบรรทัดคำสั่งและภาษาสคริปต์ที่เกี่ยวข้อง โดยเริ่มต้นมุ่งเป้าไปที่ผู้ดูแลระบบ PowerShell ให้ส่วนติดต่อที่ทรงพลังในการทำงานอัตโนมัติและจัดการการกำหนดค่าของระบบโดยใช้สคริปต์และ cmdlets (คำสั่งที่มีน้ำหนักเบา) ตลอดหลายปีที่ผ่านมา PowerShell ได้เติบโตขึ้นในด้านความสามารถและพัฒนาอย่างมีนัยสำคัญ โดยเน้นการรวมเข้ากับ .NET framework และอนุญาตให้ใช้งานข้ามแพลตฟอร์มด้วย PowerShell Core
PowerShell ถูกนำเสนอครั้งแรกในปี 2006 ในชื่อ "Monad" โดยมุ่งเน้นไปที่การปรับปรุงการดูแลระบบใน Windows มันสร้างสะพานเชื่อมระหว่างผู้ใช้และกระบวนการระบบพื้นฐาน โดยมุ่งเน้นไปที่การเขียนสคริปต์แบบบรรทัดคำสั่ง การออกแบบของมันได้รับอิทธิพลจากเชลล์ของ Unix โดยเน้นการเขียนโปรแกรมเชิงวัตถุผ่านความสามารถของ .NET framework
เมื่อมีการเปิดตัว Windows Management Framework (WMF) 3.0 ในปี 2012 PowerShell ได้กลายเป็นเครื่องมือที่มีความแข็งแกร่งมากขึ้น โดยมีการแนะนำฟีเจอร์ใหม่ ๆ เช่น workflows และ modules การมาถึงของ PowerShell Core (เวอร์ชัน 6) ในปี 2016 ถือเป็นเหตุการณ์สำคัญ เนื่องจากมันถูกออกแบบมาให้ทำงานบน macOS และ Linux ขยายขอบเขตการใช้งานออกไปนอกระบบนิเวศของ Windows
ณ ขณะนี้ PowerShell ยังคงพัฒนาในรูปแบบโอเพนซอร์ส ซึ่งอนุญาตให้มีการมีส่วนร่วมจากนักพัฒนาทั่วโลก เวอร์ชันล่าสุดได้รวมฟังก์ชันขั้นสูง ทำให้มันมีความเกี่ยวข้องไม่เพียงแต่สำหรับการดูแลระบบ แต่ยังรวมถึงการเขียนสคริปต์และการทำงานอัตโนมัติในแพลตฟอร์มที่แตกต่างกัน ความสัมพันธ์ของมันกับ .NET ได้เติบโตขึ้นอย่างลึกซึ้ง ทำให้มันกลายเป็นเครื่องมือการเขียนสคริปต์ที่ทรงพลังสำหรับนักพัฒนาในสภาพแวดล้อมที่หลากหลาย
คำสั่ง PowerShell ซึ่งเรียกว่า cmdlets จะปฏิบัติตามรูปแบบการตั้งชื่อแบบกริยา-คำนาม
Get-Process
PowerShell รองรับการส่งข้อมูลผ่านท่อ ซึ่งอนุญาตให้ผลลัพธ์ของ cmdlet หนึ่งทำหน้าที่เป็นข้อมูลนำเข้าสำหรับอีก cmdlet หนึ่ง
Get-Process | Where-Object { $_.CPU -gt 100 }
ตัวแปรใน PowerShell จะมีสัญลักษณ์ $
นำหน้าและสามารถเก็บข้อมูลประเภทต่าง ๆ ได้มากมาย
$greeting = "Hello, World!"
PowerShell รองรับอาร์เรย์และแฮชตารางโดยตรงเพื่อการจัดการข้อมูลที่ง่าย
$array = @(1, 2, 3)
$hash = @{"key" = "value"}
คุณสามารถกำหนดฟังก์ชันที่สามารถนำกลับมาใช้ใหม่ใน PowerShell
function Greet {
param($name)
"Hello, $name!"
}
การจัดการข้อผิดพลาดใน PowerShell สามารถจัดการได้โดยใช้บล็อก try/catch
try {
Get-Process -Name "nonexistent"
} catch {
Write-Host "เกิดข้อผิดพลาด: $_"
}
สคริปต์ PowerShell จะถูกบันทึกด้วยนามสกุล .ps1
และสามารถเรียกใช้ได้โดยตรง
# myscript.ps1
Write-Host "กำลังเรียกใช้สคริปต์ PowerShell ของฉัน"
PowerShell ถือว่าข้อมูลเป็นวัตถุ ทำให้เข้าถึงและจัดการคุณสมบัติได้ง่าย
$process = Get-Process -Name "powershell"
$process.Id
PowerShell อนุญาตให้คุณบรรจุและแจกจ่ายฟังก์ชันในรูปแบบโมดูล
Import-Module MyModule
PowerShell รองรับการเข้าถึงระยะไกล ซึ่งช่วยให้สามารถเรียกใช้คำสั่งบนเครื่องระยะไกลได้
Enter-PSSession -ComputerName Server01
PowerShell ทำงานบนรันไทม์ .NET ซึ่งช่วยให้การเรียกใช้สคริปต์และ cmdlets ของ PowerShell เป็นไปอย่างมีประสิทธิภาพสูงสุด
มีหลาย IDEs และ editors ที่สนับสนุนการพัฒนา PowerShell รวมถึง:
ในการสร้างสคริปต์ PowerShell นักพัฒนาสามารถเขียนโค้ดในโปรแกรมแก้ไขข้อความใด ๆ และบันทึกด้วยนามสกุล .ps1
โปรเจกต์อาจรวมถึงสคริปต์และโมดูลหลายรายการที่จัดระเบียบในโฟลเดอร์
PowerShell ถูกใช้กันอย่างแพร่หลายในหลายภาคส่วนสำหรับ:
PowerShell มีความสัมพันธ์กับภาษาการเขียนโปรแกรมต่าง ๆ:
สคริปต์ PowerShell สามารถแปลเป็นภาษาที่สนับสนุนการทำงานอัตโนมัติและการเขียนสคริปต์ เช่น Python หรือ Bash แม้ว่าจะไม่มีเครื่องมือแปลจากแหล่งที่มาไปยังแหล่งที่มาโดยตรง แต่การแปลงด้วยมือสามารถเกี่ยวข้องกับการเขียน cmdlets ใหม่เป็นคำสั่งหรือฟังก์ชันที่เทียบเท่าในภาษาที่ต้องการ
เครื่องมือแปลจากแหล่งที่มาไปยังแหล่งที่มีอยู่ ได้แก่: