PowerShell เป็นทั้งอินเทอร์เฟซสำหรับพิมพ์และประมวลผลคำสั่งในระบบปฏิบัติการ Windows ซึ่งไมโครซอฟต์ตั้งใจจะทำมาแทนที่ Command Prompt เปิดตัวในปีค.ศ. 2006 โดยให้มาใน Windows 10 มีข้อดีหลายอย่าง โดยเฉพาะความง่ายดายในการใช้ และยังจัดการงานอัตโนมัติได้อีกด้วย
แต่ก่อนอื่นเลย คงต้องแนะนำให้รู้จักกับ Windows Terminal ก่อน
(ในใจผู้อ่านบางท่านคงคิดแล้ว อะไรวะ พูดถึง PowerShell เลี้ยวมา Terminal ทำไมอีก?)
ความจริงอีกข้อก็คือ ไมโครซอฟต์ได้ปล่อย Terminal มาพร้อม ๆ กับ PowerShell โดยให้มีสถานะเป็น “ทางผ่าน” หรือ Terminal ตามชื่อ (หรือตั้งชื่อเลียนแบบ Mac OS ก็ไม่รู้) ถ้าคลิกขวาที่สัญลักษณ์วินโดว์ใน Windows 11 จะเห็นคำว่า Terminal กับ Terminal (Admin) โดดเด่นในสายตา
ตัวนี้เป็น command-line interfaces ทำหน้าที่เป็นศูนย์กลางสำหรับการเข้าถึงเครื่องมือที่เป็น command-line ในหน้าต่างเดียว คือ จะใช้ Command Prompt หรือ PowerShell หรือ Python Command Prompt ก็ใช้งานผ่าน Terminal
เนื้อหาโดยรวม :)
Windows Terminal
- Windows Terminal เปิดหลายแท็บภายในหน้าต่างเดียว สลับระหว่างเครื่องมือบรรทัดคำสั่งหรือเชลล์ต่างๆ นอกจากนี้ยังรองรับการแบ่งหน้าต่างออกเป็นหลายส่วน ทำให้สามารถจัดการคำสั่งได้สะดวกขึ้น
- ผู้ใช้สามารถปรับแต่งลักษณะที่ปรากฏของ Windows Terminal ด้วยธีม ชุดสี แบบอักษร และรูปภาพพื้นหลังที่หลากหลาย
- สนับสนุนแบบเนทีฟสำหรับ command-line ต่างๆ รวมถึง Command Prompt, PowerShell หมายความว่าผู้ใช้สามารถสลับระหว่างเชลล์ต่างๆ ได้อย่างราบรื่นภายในหน้าต่างเทอร์มินัลเดียวกัน
- เทอมินัลใช้ประโยชน์จาก GPU ในการแสดงข้อความ ทำให้มีความชัดเจนและอ่านง่ายขึ้น โดยเฉพาะอย่างยิ่งเมื่อต้องจัดการกับอักขระ Unicode ที่ซับซ้อน
- กำหนดการเชื่อมโยงคีย์และทางลัดของตนเองเพื่อปรับปรุงเวิร์กโฟลว์และเพิ่มประสิทธิภาพการโต้ตอบบรรทัด
ดังนั้น ไม่ว่าเราจะเปิด PowerShell หรือว่า Command Prompt ก็จะเป็นการเปิดผ่าน Terminal
PowerShell
ตั้งแต่ Windows 10 เป็นต้นมา ไมโครซอฟต์ได้วาง PowerShell เป็นตัวเลือกเริ่มต้นสำหรับ Command-Line แต่ยังเรียกใช้ Command Prompt ที่เราคุ้นเคยผ่าน cmd.exe แบบเก่าได้ (หากต้องการเปลี่ยนให้ Command Prompt หรือตัวอื่นเป็นตัวเริ่มต้น ให้ตั้งค่าที่ Setting ใน Terminal
ในบล็อกนี้ DataRevol.com จะอธิบายความแตกต่างระหว่าง PowerShell กับ Command Prompt ให้ท่านผู้อ่านพิจารณา
PowerShell และ Command Prompt ต่างเป็นแอ็ปประเภท command-line interfaces ในระบบ Windows มีต้นกำเนิดตระกูลเดียวกัน
CMD หรือ Command Prompt นั้นเปิดตัวมาใน Windows NT เมื่อปีค.ศ. 1987เป็นซอฟต์แวร์ที่รันข้อมูลทีละบรรทัด (command-line) คล้ายกับ DOS รุ่นก่อน แต่มีฟังก์ชั่นเพิ่มเติม และ PowerShell ก็เหมือนเจเนอเรชันถัดมาของ CMD นั่นเอง และด้วยเหตุผลที่จะกล่าวถึงต่อไป DataRevol.com จึงอยากเชิญชวนให้ท่านหันมาลองใช้ PowerShell แม้ว่าจะถนัดคุ้นเคย CMD มากกว่า
สิ่งที่แตกต่างกันก็คือ คำสั่งที่ใช้ ใน Command Prompt จะใช้ syntax และcommands แบบดั้งเดิมเหมือนกับ MS-DOS คือจะเป็นคำสั่งสั้น ๆ และค่อนข้างจะคลุมเครือสำหรับมือใหม่ แต่ใน PowerShell ปรับเปลี่ยนใช้ไวยากรณ์ทันสมัยและสอดคล้องกันมากขึ้น ช่วยให้อ่านคำสั่งได้ง่ายขึ้น ค้นหาและจดจำ cmdlets (คำสั่ง PowerShell) ได้ง่ายขึ้น ตัวอย่างเช่น
Command Prompt: เราจะใช้คำสั่ง dir เพื่อแสดงไดเร็กทอรี แต่ใน PowerShellเราจะใช้ Get-ChildItem
คือ ใช้คำที่เฉพาะเจาะจงมากขึ้น (แต่เรื่องนี้ลางเนื้อชอบลางยา บางท่านก็เคยเปรย ๆ ว่า dir มันก็ชัดเจนในตัวอยู่เหมือนกัน) อันนี้เป็นตัวอย่างเล็กน้อยเพื่อให้เห็นภาพว่า มีบางอย่างที่เปลี่ยนไปไม่เหมือนเดิม
ทำไมจึงอยากให้ใช้ PowerShell?
ข้อได้เปรียบที่สำคัญประการหนึ่งของ PowerShell คือความสามารถในการเขียนสคริปต์อันทรงพลัง PowerShell เป็นภาษาสคริปต์เต็มรูปแบบซึ่งแตกต่างจาก command prompt ตรงที่สนับสนุนตัวแปร เช่นใน Command Prompt ตั้งค่า variable เราใช้variable_name=value และการเข้าถึง value เราใช้ %variable_name% แต่ถ้าเป็น PowerShell เราจะใช้สัญลักษณ์ $ เช่น $variable_name = value และเข้าถึง value ง่าย ๆ เพียงใช้$variable_name
และ ข้อได้เปรียบสำคัญกว่านั้น ก็คือ การรองรับ การวนซ้ำ (loop) การสร้างเงื่อนไข ฟังก์ชัน การจัดการข้อผิดพลาด และอื่นๆ สิ่งนี้ทำให้เหมาะสำหรับการทำงานที่ซับซ้อนโดยอัตโนมัติ การเขียนสคริปต์ที่ใช้ซ้ำและโซลูชันที่ซับซ้อน
ข้อแตกต่างอีกประการหนึ่งคือคำสั่ง CMD จะส่งคืนข้อความ แต่ PowerShell cmdlets ส่งคืนเป็น Object ที่สามารถใช้สำหรับการจัดการโดยตรง โดยถือว่าเอาต์พุตเป็นวัตถุที่มีโครงสร้างมากกว่าข้อความธรรมดา ซึ่งช่วยให้จัดการและกรองข้อมูลได้ง่ายดายขึ้น ช่วยในการทำงานที่ซับซ้อนง่ายขึ้น ลักษณะเชิงวัตถุของ PowerShell ช่วยให้สามารถรวมเข้ากับเทคโนโลยีอื่น ๆ ได้อย่างราบรื่น เช่น .NET framework และ Windows Management Instrumentation (WMI) ทำให้ใช้ประโยชน์จากระบบ Windows ได้อย่างเต็มประสิทธิภาพ
ในการถ่ายโอนวัตถุเหล่านี้ระหว่าง cmdlets นี้ ทำลายข้อจำกัดเดิมของ CMD ที่จำนวนของตัวแปรมีจำกัด และต้องส่งผ่านไปยังคำสั่งตามลำดับที่เข้มงวด PowerShell ไม่มีข้อจำกัดดังกล่าว
cmdlets (อ่านว่า “command-lets”) ออกแบบมาเพื่อทำงานเฉพาะ และสร้างขึ้นเพื่อให้สอดคล้อง ค้นพบได้ และใช้งานง่าย มีให้เลือกมากมายครอบคลุมงานการดูแลระบบที่หลากหลาย ช่วยให้ผู้ดูแลระบบสามารถจัดการกระบวนการ บริการ การตั้งค่ารีจิสทรี การกำหนดค่าเครือข่าย Active Directory และอื่นๆ อีกมากมายได้จากภายใน PowerShell
PowerShell ผสานรวมเข้ากับเฟรมเวิร์กการจัดการ Windows ต่างๆ อย่างราบรื่น เช่น Windows Management Instrumentation (WMI), Windows PowerShell Desired State Configuration (DSC) และ Active Directory การผสานรวมนี้ช่วยให้ผู้ดูแลระบบสามารถจัดการและทำให้ระบบอัตโนมัติในแง่มุมต่างๆ รวมถึงการกำหนดค่าระบบ การจัดการนโยบายกลุ่ม การจัดการผู้ใช้ และการตรวจสอบ
ใน CMD ต้องป้อนทุกอย่างให้ถูกต้องในครั้งแรก มิฉะนั้นจะไม่ทำงาน หรือทำงานผิดพลาด และอาจสูญเสียข้อมูลสำคัญบางอย่าง PowerShell เปิดโอกาสให้คุณทดลองก่อน ด้วยเหตุผลเหล่านี้นี้ Microsoft จึงแนะนำให้เปลี่ยนไปใช้ PowerShell
หากคุ้นเคยกับ CMD อยู่ จะใช้งานต่อก็ไม่มีปัญหา เวลาใช้กับงานที่ไม่ซับซ้อนก็ยังเป็นเครื่องมือที่เป็นประโยชน์อยู่ แต่ PowerShell มีฟังก์ชันการทำงานที่หลากหลาย ช่วยให้งานประจำวันง่ายขึ้นมาก ทำให้สคริปต์ทำงานทั้งหมด การดำเนินการปรับใช้เป็นชุด การเข้าถึงข้อมูลที่ซ่อนอยู่ การจัดการสิทธิ์ และอื่นๆ อีกมากมาย