ภาษาการเขียนโปรแกรม PowerShell

ภาพรวม

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 ได้เติบโตขึ้นอย่างลึกซึ้ง ทำให้มันกลายเป็นเครื่องมือการเขียนสคริปต์ที่ทรงพลังสำหรับนักพัฒนาในสภาพแวดล้อมที่หลากหลาย

คุณสมบัติของไวยากรณ์

Cmdlets

คำสั่ง PowerShell ซึ่งเรียกว่า cmdlets จะปฏิบัติตามรูปแบบการตั้งชื่อแบบกริยา-คำนาม

Get-Process

Pipelining

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

มีหลาย IDEs และ editors ที่สนับสนุนการพัฒนา PowerShell รวมถึง:

การสร้างโปรเจกต์

ในการสร้างสคริปต์ PowerShell นักพัฒนาสามารถเขียนโค้ดในโปรแกรมแก้ไขข้อความใด ๆ และบันทึกด้วยนามสกุล .ps1 โปรเจกต์อาจรวมถึงสคริปต์และโมดูลหลายรายการที่จัดระเบียบในโฟลเดอร์

การใช้งาน

PowerShell ถูกใช้กันอย่างแพร่หลายในหลายภาคส่วนสำหรับ:

การเปรียบเทียบกับภาษาอื่น ๆ ที่คล้ายกัน

PowerShell มีความสัมพันธ์กับภาษาการเขียนโปรแกรมต่าง ๆ:

เคล็ดลับการแปลจากแหล่งที่มาไปยังแหล่งที่มา

สคริปต์ PowerShell สามารถแปลเป็นภาษาที่สนับสนุนการทำงานอัตโนมัติและการเขียนสคริปต์ เช่น Python หรือ Bash แม้ว่าจะไม่มีเครื่องมือแปลจากแหล่งที่มาไปยังแหล่งที่มาโดยตรง แต่การแปลงด้วยมือสามารถเกี่ยวข้องกับการเขียน cmdlets ใหม่เป็นคำสั่งหรือฟังก์ชันที่เทียบเท่าในภาษาที่ต้องการ

เครื่องมือแปลจากแหล่งที่มาไปยังแหล่งที่มีอยู่ ได้แก่: