ความแตกต่างจาก PowerShell: เหตุผลที่คุณควรเลิกใช้ cmd
ในซีรีส์ที่ผ่านมา เราได้เรียนรู้เกี่ยวกับประวัติและวิธีใช้พื้นฐานของ Command Prompt (cmd.exe) ซึ่งเป็นเชลล์ดั้งเดิมของ Windows ไปจนถึงการทำงานอัตโนมัติอย่างง่าย ความเรียบง่ายและการยังคงอยู่เพื่อความเข้ากันได้นั้น เรียกได้ว่าเป็นประวัติศาสตร์ของ Windows เลยทีเดียว
อย่างไรก็ตาม ในอีกด้านหนึ่งเราก็รู้จัก "PowerShell" ที่ทันสมัยและทรงพลังกว่า หลายคนคงรู้สึกว่า "เข้าใจพื้นฐานของ cmd แล้ว แต่สุดท้ายควรเปลี่ยนไปใช้ PowerShell หรือไม่" หรือ "อยากรู้ข้อดีที่เป็นรูปธรรมมากกว่านี้"
บทความนี้คือ "คู่มือการสำเร็จการศึกษา" สำหรับคุณ ในขณะที่ย้อนดู "หนังสือรุ่น" อย่าง Command Prompt เราจะมาอธิบายอย่างละเอียดถึงเหตุผลที่ชัดเจนและเป็นรูปธรรมว่าทำไม Web Creator ในยุคปัจจุบันจึงควรก้าวสู่ "เวทีใหม่" ที่เรียกว่า PowerShell ผ่านการเปรียบเทียบ เมื่อคุณอ่านบทความนี้จบ มือของคุณที่กำลังจะเปิดเทอร์มินัลคงจะมุ่งไปยังไอคอนของ PowerShell อย่างเป็นธรรมชาติ
เปรียบเทียบที่ 1: ความสามารถในการ "ค้นหา" ข้อมูล - ข้อจำกัดของข้อความและความเป็นไปได้ของอ็อบเจกต์
ความแตกต่างพื้นฐานที่สุดระหว่างทั้งสองคือ ผลลัพธ์ของคำสั่งเป็น "เพียงแค่สตริงข้อความ" หรือเป็น "อ็อบเจกต์ที่มีโครงสร้าง" เรามาดูกันว่าความแตกต่างนี้สร้างความแตกต่างในการใช้งานจริงมากน้อยเพียงใดผ่านงานที่เป็นรูปธรรม
โจทย์: "ต้องการตรวจสอบไฟล์ 5 อันดับแรกที่มีขนาดใหญ่ที่สุดในโฟลเดอร์ Documents ของฉัน"
ความพยายามใน Command Prompt (cmd)
การทำสิ่งนี้ใน cmd นั้นไม่ใช่เรื่องง่าย แม้ว่าเราจะสามารถแสดงรายการไฟล์ด้วย dir /s ได้ แต่ผลลัพธ์ที่ได้เป็นเพียงข้อความที่เรียงต่อกัน การดึงเฉพาะส่วนของขนาดไฟล์ออกมา, จัดเรียงเป็นตัวเลขให้ถูกต้อง, และแสดง 5 อันดับแรกนั้น จำเป็นต้องใช้การวนลูป for /f ที่ซับซ้อนและการจัดการสตริง ซึ่งเป็นงานที่ต้องใช้ทักษะขั้นสูงและผิดพลาดได้ง่าย
กล่าวคือ cmd เหมาะสำหรับให้ "มนุษย์ดูและตัดสินใจ" แต่ไม่เหมาะสำหรับให้ "โปรแกรมนำผลลัพธ์ไปใช้ซ้ำเพื่อประมวลผลขั้นสูงต่อไป"
ทางออกที่สวยงามใน PowerShell
ในทางกลับกัน สำหรับ PowerShell งานนี้สามารถแก้ไขได้อย่างราบรื่นเหมือนสายน้ำไหลด้วยคำสั่งเพียงบรรทัดเดียว
Get-ChildItem -Path "C:\Users\YourName\Documents" -File -Recurse | Sort-Object -Property Length -Descending | Select-Object -First 5
สิ่งที่คำสั่งหนึ่งบรรทัดนี้ทำคือ:
Get-ChildItem: ขั้นแรก ดึงไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์ที่ระบุมาเป็น "อ็อบเจกต์"|: ส่งต่อชุดของอ็อบเจกต์ที่ได้มาไปยังคำสั่งถัดไปผ่านไปป์Sort-Object: จัดเรียงอ็อบเจกต์ที่ได้รับมาตามขนาดไฟล์ (คุณสมบัติLength) จากมากไปน้อย (-Descending)|: ส่งต่อผลลัพธ์ที่จัดเรียงแล้วไปยังคำสั่งถัดไปSelect-Object: เลือกและแสดงเฉพาะ 5 อันดับแรก (-First 5) จากอ็อบเจกต์ที่ได้รับมา
แทนที่จะต้องวิเคราะห์ข้อความอย่างยากลำบาก เราสามารถจัดการข้อมูลที่มีโครงสร้างได้อย่างอิสระด้วยคุณสมบัติต่างๆ นี่คือเหตุผลสำคัญที่สุดที่ทำให้ PowerShell ถูกเรียกว่า "ทรงพลัง"
เปรียบเทียบที่ 2: ความสามารถในการ "เชื่อมต่อ" กับภายนอก - การเรียกใช้ API ได้หรือไม่
ในการสร้างเว็บสมัยใหม่ มักมีสถานการณ์ที่ต้องดึงข้อมูลจาก API (Application Programming Interface) ภายนอกมาใช้งานบ่อยครั้ง ตัวอย่างเช่น การดึงข้อมูลบริการเว็บ หรือการดึงข้อมูลพยากรณ์อากาศ
โจทย์: "ต้องการใช้ GitHub API เพื่อดึงข้อมูลผู้ใช้ของ Microsoft และแสดงจำนวน Public Repository"
ความท้าทายใน Command Prompt (cmd)
cmd ไม่มีฟังก์ชันมาตรฐานในการเข้าถึงเว็บเพื่อดึงและวิเคราะห์ข้อมูลอย่าง JSON หากต้องการทำเช่นนี้ จะต้องติดตั้งเครื่องมือภายนอกอย่าง curl เพิ่มเติม และต้องใช้วิธีอื่นในการประมวลผลข้อความ JSON ที่ดึงมา ซึ่งใช้ความพยายามอย่างมาก
ทางออกที่ง่ายดายใน PowerShell
PowerShell มี cmdlet ที่ทรงพลังชื่อว่า Invoke-RestMethod มาให้เป็นมาตรฐาน ซึ่งเป็นเครื่องมือชั้นยอดที่สามารถเข้าถึง Web API และแปลงข้อมูล JSON ที่ส่งกลับมาเป็นอ็อบเจกต์ของ PowerShell ได้โดยอัตโนมัติ
ขั้นแรก ดึงข้อมูลจาก API และเก็บไว้ในตัวแปร
$gitHubUser = Invoke-RestMethod -Uri "https://api.github.com/users/microsoft"
เพียงเท่านี้ ที่เหลือก็แค่เข้าถึงคุณสมบัติของอ็อบเจกต์
Write-Host "ชื่อผู้ใช้: $($gitHubUser.name)"
Write-Host "จำนวน Public Repository: $($gitHubUser.public_repos)"
เราสามารถเข้าถึงข้อมูลบนเว็บได้อย่างง่ายดายราวกับว่าเป็นข้อมูลที่อยู่ในเครื่อง ด้วยการใช้ .name หรือ .public_repos ความสามารถในการเชื่อมต่อกับบริการภายนอกเช่นนี้เป็นข้อได้เปรียบอย่างท่วมท้นของ PowerShell ที่ไม่มีใน cmd
สรุป: ทำไมเราจึงควรเลิกใช้ cmd
ดังที่เราได้เห็นมาแล้ว PowerShell ไม่ได้เป็นเพียงผู้สืบทอดของ Command Prompt เท่านั้น แต่เป็นเครื่องมือที่มีแนวคิดใหม่ทั้งหมด ซึ่งถูกออกแบบใหม่ตั้งแต่ต้นเพื่อทำงานที่ทันสมัย
เหตุผลที่คุณควรเปลี่ยนจาก cmd ไปใช้ PowerShell นั้นชัดเจน:
- ความสามารถในการประมวลผลข้อมูลที่ทรงพลัง: สามารถจัดการอ็อบเจกต์ที่มีโครงสร้างได้อย่างอิสระผ่านไปป์ไลน์ โดยไม่ต้องกังวลกับข้อจำกัดของข้อความ
- ความสอดคล้องและง่ายต่อการเรียนรู้: รูปแบบ cmdlet แบบ
กริยา-คำนามทำให้ง่ายต่อการคาดเดาว่าจะต้องทำอะไรต่อไป และช่วยลดต้นทุนในการเรียนรู้ - ฟังก์ชันสคริปต์ที่ทันสมัย: สามารถเขียนโปรแกรมอย่างจริงจังได้ด้วยตัวแปร, ฟังก์ชัน, การจัดการข้อผิดพลาด และอื่นๆ ที่ซับซ้อนยิ่งขึ้น
- การเชื่อมต่อกับภายนอกและความสามารถในการขยาย: ง่ายต่อการเชื่อมต่อกับ Web API และไลบรารี .NET ซึ่งช่วยขยายขอบเขตของสิ่งที่ทำได้ออกไปอย่างไม่สิ้นสุด
- ครอสแพลตฟอร์ม: ทักษะที่เรียนรู้บน Windows สามารถนำไปใช้ได้โดยตรงบนเซิร์ฟเวอร์ macOS หรือ Linux
ความรู้เกี่ยวกับ Command Prompt ไม่ได้ไร้ประโยชน์ในการทำความเข้าใจประวัติศาสตร์ของ Windows อย่างแน่นอน อย่างไรก็ตาม เพื่อเพิ่มประสิทธิภาพการทำงานในฐานะ Web Creator หรือผู้เชี่ยวชาญด้านไอทีในอนาคต การเปลี่ยนไปใช้ PowerShell ซึ่งเป็นเครื่องมือที่ทรงพลังและทันสมัยกว่า ถือเป็นการลงทุนที่ชาญฉลาดที่สุด
ซีรีส์แนะนำ cmd.exe ขอจบลงเพียงเท่านี้ หวังว่าซีรีส์นี้จะช่วยให้คุณเอาชนะความรู้สึกไม่ถนัดกับ "หน้าจอสีดำ" และได้ค้นพบพลังที่แท้จริงของบรรทัดคำสั่ง ขอบคุณครับ!