🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

ความแตกต่างจาก 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

สิ่งที่คำสั่งหนึ่งบรรทัดนี้ทำคือ:

  1. Get-ChildItem: ขั้นแรก ดึงไฟล์และโฟลเดอร์ทั้งหมดในโฟลเดอร์ที่ระบุมาเป็น "อ็อบเจกต์"
  2. |: ส่งต่อชุดของอ็อบเจกต์ที่ได้มาไปยังคำสั่งถัดไปผ่านไปป์
  3. Sort-Object: จัดเรียงอ็อบเจกต์ที่ได้รับมาตามขนาดไฟล์ (คุณสมบัติ Length) จากมากไปน้อย (-Descending)
  4. |: ส่งต่อผลลัพธ์ที่จัดเรียงแล้วไปยังคำสั่งถัดไป
  5. 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 นั้นชัดเจน:

ความรู้เกี่ยวกับ Command Prompt ไม่ได้ไร้ประโยชน์ในการทำความเข้าใจประวัติศาสตร์ของ Windows อย่างแน่นอน อย่างไรก็ตาม เพื่อเพิ่มประสิทธิภาพการทำงานในฐานะ Web Creator หรือผู้เชี่ยวชาญด้านไอทีในอนาคต การเปลี่ยนไปใช้ PowerShell ซึ่งเป็นเครื่องมือที่ทรงพลังและทันสมัยกว่า ถือเป็นการลงทุนที่ชาญฉลาดที่สุด

ซีรีส์แนะนำ cmd.exe ขอจบลงเพียงเท่านี้ หวังว่าซีรีส์นี้จะช่วยให้คุณเอาชนะความรู้สึกไม่ถนัดกับ "หน้าจอสีดำ" และได้ค้นพบพลังที่แท้จริงของบรรทัดคำสั่ง ขอบคุณครับ!