Windows PowerShell มีฟีเจอร์ History ในตัว ที่จดจำคำสั่งทั้งหมดที่คุณรัน แม้ควรจดจำเฉพาะ Session ปัจจุบัน แต่พบว่าเก็บมากกว่านั้น บทความนี้จะแสดงวิธีดูประวัติคำสั่ง PowerShell และใช้งานอย่างมีประสิทธิภาพ

วิธีดูประวัติคำสั่ง PowerShell
ข้อได้เปรียบของ History คือไม่ต้องพิมพ์คำสั่งเดิมซ้ำ แต่เลื่อนดูหลายร้อยคำสั่งไม่สะดวก แล้วค้นหาหรือรันคำสั่งที่จำได้ไม่เต็มที่ยังไง? ลองวิธีต่อไปนี้
- วิธีใช้คีย์บอร์ด (Keyboard Method)
- ค้นหาข้างหน้าหรือข้างหลังในประวัติ PowerShell
- ดูประวัติทั้งหมดของ Session นี้
- เรียกใช้คำสั่งเฉพาะจากประวัติ
- ค้นหาภายในประวัติ
ท้ายสุดยังอธิบายวิธี Clear, Export และ Import ประวัติคำสั่ง PowerShell ประโยชน์มากหากต้องรันคำสั่งเดิมบ่อยๆ
1] วิธีใช้คีย์บอร์ด (Keyboard Method)

มั่นใจว่าคุณเคยใช้ Command Prompt ถ้าใช้ Windows มาสักพัก กดลูกศรขึ้น/ลงเพื่อย้อนกลับ/ไปข้างหน้าคำสั่งที่รัน PowerShell ทำได้เหมือนกัน แต่มีกลิ้ง: หากจำคำสั่งได้บางส่วน ค้นหายังไง?
- พิมพ์ส่วนของคำสั่งที่จำได้
- กด F8 แล้วกดต่อจนกว่าจะเจอ
- คำค้นหาจะไฮไลท์สีเขียวสนิม ตามด้วยส่วนที่เหลือของคำสั่ง
ข้อจำกัด: คำค้นหาต้องเป็นต้นข้อความของคำสั่งเท่านั้น
2] ค้นหาข้างหน้าหรือข้างหลังในประวัติ

หากต้องการค้นหาข้างหน้า (Forward) หรือข้างหลัง (Backward) ในประวัติ ใช้ Ctrl + R และ Ctrl + S ตัวแรกค้นหาย้อนหลัง ตัวหลังค้นหาข้างหน้า ทันทีที่กดลัดแล้ว จะได้ Snippet ที่ด้านล่าง (bck-i-search หรือ fwd-i-search) พิมพ์สิ่งที่ต้องการค้นหา แม้ข้อความจะอยู่กลางคำสั่งก็ค้นเจอ ดีกว่าวิธี F8 ข้างต้น
3] ดูประวัติคำสั่ง PowerShell ทั้งหมดของ Session นี้

พิมพ์ History แล้วกด Enter จะเห็นคำสั่งทั้งหมดที่รันใน Session ปัจจุบัน แม้ลูกศรจะดูคำสั่ง Session ก่อนหน้าได้ แต่ History จะไม่มี หากกด ปุ่ม "H" แล้ว Enter ก็จะแสดงประวัติคำสั่ง คิดว่าเป็น Shortcut ของคำสั่ง History
4] เรียกใช้คำสั่งเฉพาะจากประวัติ

สังเกตว่ารูปข้างต้นมี ID ถัดจากคำสั่งแต่ละคำ หากต้องการรันคำสั่งเฉพาะจากรายการ ใช้ Invoke-History
- จด ID ของคำสั่งที่ต้องการรัน
- พิมพ์ Invoke-History <ID> แทนที่ <ID> ด้วยหมายเลขที่แน่นอน
- กด Enter จะรันคำสั่งนั้นจากประวัติ
5] ค้นหาภายในประวัติ

วิธีง่ายที่สุดค้นหาในประวัติคำสั่งคือใช้ Select-String บน Output ของ History
- พิมพ์คำสั่งต่อไปนี้ แทนที่ Get ด้วยคำที่ต้องการค้นหา
- Get-History | Select-String -Pattern "Get"
- จะแสดงคำสั่งทั้งหมดที่ตรงกับคำค้นหา
เนื่องจากได้ ID มาด้วย จึงสามารถใช้ Invoke-History รันทันที
Clear, Export และ Import PowerShell History
เพื่อลบคำสั่งทั้งหมดจากประวัติ ให้รันคำสั่ง Clear-History หมายเหตุ: แม้ลบแล้วยังเข้าถึงคำสั่งด้วยลูกศรขึ้น/ลงได้
เพื่อ Export คำสั่งทั้งหมด ใช้รูปแบบ Export-Clixml หรือ Export-CSV ตัวอย่างคำสั่ง:
Get-History | Export-Clixml -Path <Path>\PSHistorycommands.xml Get-History | Export-Csv -Path <Path>\PSHistorycommands.csv
เพื่อ Import คำสั่งกลับไป Session ใหม่หรืออื่น ใช้คำสั่ง:
Add-History -InputObject (Import-Clixml -Path <Path>\PSHistorycommands.xml) Add-History -InputObject (Import-Csv -Path <Path>\PSHistorycommands.csv)
คุณสามารถเปิดไฟล์ CSV หรือ XML นี้ 언제든지 เพื่อดูประวัติคำสั่ง PowerShell ทันที สรุปเกือบทุกอย่างรอบๆ PowerShell Command History และวิธี reuse ด้วยคำสั่ง การค้นหา หรือ Import กลับมาใช้วันพรุ่งนี้
