ถ้าคุณนำประสิทธิภาพของ Linux มาไว้ที่ Windows ได้จะเป็นอย่างไร? ความแตกต่างหลักระหว่าง Windows และ Linux คือ Linux Distro ส่วนใหญ่มาพร้อมกับ Bash Shell ที่ทรงพลัง ในขณะที่ Command Prompt ใน Windows เบื้องต้น เพียงแค่ Windows มี Terminal ที่ทรงพลังเท่าไร?
กับ PowerShell ความฝันนี้อาจกลายเป็นความจริง
Disclaimer: PowerShell ไม่ใช่ "Bash สำหรับ Windows" และไม่ได้ตั้งใจจะเป็นอย่างนั้น ใช่ ทั้งคู่เป็น Command Line Environment ที่เพิ่มประสิทธิภาพได้มาก แต่ความคล้ายคลึงจบแค่นั้น ควรมอง PowerShell ว่าเป็นแนวทางแยกต่างหากในการสร้าง Command Line Environment ที่ทรงพลัง
PowerShell คืออะไร?
PowerShell คิดได้ว่าเป็นการอัปเกรดใหญ่ของ Windows Command Prompt ทำงานเดียวกันได้มาก (นำทางระบบ, โต้ตอบกับไฟล์, แก้ไข Properties) แต่เปิดโอกาสให้เข้าถึง .NET Framework ทั้งหมด เพื่อพลังสูงสุด เพื่อเข้าใจประโยชน์ อ่านต่อ
มีประโยชน์หลัก 2 จุด ทำให้ PowerShell ดีกว่า Command Prompt แบบเดิม: Extensibility (ความยืดหยุ่นขยายได้) และ Scriptability (ความสามารถในการเขียนสคริปต์)
PowerShell มาพร้อมชุดคำสั่งเริ่มต้น แต่คุณเพิ่มคำสั่งของตัวเองได้โดยสร้าง Cmdlets Cmdlets เป็น Classes ที่สร้างด้วยภาษา C# และเมื่อถูกเรียก จะรันภายในสภาพแวดล้อม PowerShell เนื่องจากเขียนด้วย C# Cmdlets เข้าถึง .NET Framework ทั้งหมดได้
.NET Framework มี Library โค้ดมหาศาลจาก Microsoft ตอนเขียน Cmdlet เอง คุณเข้าถึงโค้ดทั้งหมดนั้นได้ ดึงข้อมูล Process? อัลกอริทึมเข้ารหัส? เชื่อมต่อฐานข้อมูล? การสื่อสารเครือข่าย? ทั้งหมดนี้ - และมากกว่า - มีจาก .NET Framework หมายถึงงานส่วนใหญ่ทำให้แล้ว คุณแค่ต่อกันด้วยการเรียกฟังก์ชันที่ถูกต้อง
Microsoft ชี้แจงว่า PowerShell ไม่ได้หายไป - จริงๆ แล้ว Package Manager ใน Windows 10 ที่จะมาถึง จะสร้างบน PowerShell - ดังนั้นทุกคนควรพิจารณาเรียนรู้มันเร็วกว่าจะช้า
ทำไม PowerShell จึงเก่ง
PowerShell มีฟีเจอร์ขั้นสูงเยอะ ส่วนใหญ่เกี่ยวข้องกับโปรแกรมเมอร์ Windows และ Server Admins แต่มีฟีเจอร์พื้นฐานหลายอย่าง เข้าใจง่าย แต่มีประโยชน์มากสำหรับทุกคน
เรียบง่ายแแรง. สภาพแวดล้อม PowerShell ง่ายพอที่ใครก็เรียนรู้ได้ภายในไม่กี่ชั่วโมงของการอ่าน มี Learning Curve แต่ค่อนข้างตื้น และไม่ต้องเรียน ทั้งหมด เพื่อนำไปใช้
ข้อมูล Process รายละเอียด. ใช้ Task Manager ตัวเลือกอื่นได้ แต่ PowerShell ทำเคล็ดลับประหลาดได้ในการจัดการ Process เริ่มจาก Cmdlets ต้นทาง Get-Process และ Stop-Process
อัตโนมัติและสคริปต์ง่าย. Windows พื้นฐานไม่ให้ทางง่ายในการทำให้งานอัตโนมัติ ก่อน PowerShell Batch Files ทำ Scripting แบบ Primitive ได้อย่างเดียว ต้องใช้ Third-party (Perl, AutoHotkey) สำหรับ Automation แต่ว่าแล้ว PowerShell จัดตารางงานให้รันตามเวลาหรือช่วงเวลาได้
เช่น ด้วยโมดูล ScheduledTasks คุณสร้าง Trigger ให้โปรแกรม/โปรเซสเฉพาะรัน (เวลาเฉพาะ, เหตุการณ์ระบบ ฯลฯ) และกำหนด Context (ข้อจำกัดด้านความปลอดภัย)
Command Piping และ Logic. ใน Bash (Linux) คำสั่ง Pipe รวมกันได้ ผลลัพธ์ของคำสั่งหนึ่งเป็น Input ของอีกคำสั่ง เช่น Get-Process พื้นฐาน Output ข้อมูลทุก Process ที่รันอยู่ ถ้าอยากได้ข้อมูลเฉพาะ Subset Pipe กับ Where-Object ซึ่งเป็น Process Filter ให้รัน Get-Process แค่ Process ที่ Where-Object คืนค่า
PowerShell ยังมีคำสั่งพื้นฐานสำหรับ Conditional Logic (If, Else, For, Switch) ควบคุม Flow ของ Cmdlet Execution เช่น สร้าง Script PowerShell ที่รัน Cmdlets เฉพาะเมื่อเงื่อนไขบางอย่างเป็นจริง (เช่น Clean up Processes เมื่อ RAM ใกล้เต็ม)
Remote และ Background Jobs. ไม่ได้แค่รัน Cmdlets เป็น Background Processes (รันหลายงานพร้อมกัน Asynchronous) แต่ Cmdlets หลายตัวยังรันบนเครื่อง Remote ใน Network ได้ ตราบใดที่ตั้งค่าไว้ Cmdlets ที่มีความสามารถ Remote มักมี Parameter ComputerName ระบุตอนรัน
อ่านเพิ่มที่ TechNet page เรื่อง Running Remote Commands with PowerShell
ดาวน์โหลด Scripts ของบุคคลที่สาม. ไม่จำเป็นต้องขยาย PowerShell เอง Repository ออนไลน์หลายแห่งให้ดาวน์โหลดและใช้ Public Scripts และ Cmdlets ที่คนอื่นสร้าง
ไปเรียน PowerShell ที่ไหน?
พร้อมจะปนมือกับ PowerShell แล้ว? นี่คือแหล่งข้อมูลที่มักแนะนำให้มือใหม่ที่อยากเรียนเร็วที่สุด:
PowerShell Tutorial by Don Jones. ชุดวิดีโอ YouTube เน้น PowerShell 2.0 (เวอร์ชันที่มากับ Windows 7) เก่าไปหน่อย แต่เป็น Introduction ดีสำหรับผู้ไม่มีประสบการณ์ Scripting เลย วิดีโอแต่ละอันไม่กี่นาที แต่มี 99 ตอน ค่อนข้างครบครัน
Microsoft Virtual Academy (MVA). MVA ให้หลักสูตร Microsoft ฟรีเยอะ รวม 2 หลักสูตร PowerShell 3.0 มี Getting Started และ Advanced Tools & Scripting ทั้งคู่ 9 บท เรียนละประมาณ 1 ชั่วโมง
TechNet Script Center. ส่วน TechNet ของเว็บ Microsoft มีลิงก์คู่มือและทูทอเรียล PowerShell เยอะ โบนัส: ไปที่ Repository Section จะ Browse และดาวน์โหลด PowerShell Scripts ต่างๆ ได้
Hey, Scripting Guy! Blog [URL ชำรุดถูกลบ]. บล็อก "ทั้งหมดเกี่ยวกับ PowerShell" ข้อมูลดีเยอะ เกือบ 1 ทศวรรษ โพสต์ใหม่ทุกวัน จัดหมวดหมู่ด้วย Tags หาได้ง่าย หากไม่รู้เริ่มที่ไหน เริ่มจาก Browse Tag Getting Started [URL ชำรุดถูกลบ]
PowerShell เหมาะกับคุณไหม?
คุณคิดยังไง? PowerShell จะช่วยประสิทธิภาพงานบน Windows? หรือ Overkill เกินความต้องการ? แชร์ความคิดในความคิดเห็นได้เลย!