ข้อมูลโดยละเอียดของ PSReadline ใน PowerShell
PowerShell เป็นโซลูชันการทำงานอัตโนมัติข้ามแพลตฟอร์มที่ยอดเยี่ยม แต่พูดตามตรง รู้สึกเหมือนมีบางอย่างขาดหายไปในประสบการณ์บรรทัดคำสั่ง PowerShell ของคุณหรือไม่? ทำไมไม่ลองใช้โมดูล PSReadline PowerShell ดูล่ะ
PSReadline มี cmdlets ที่ให้คุณปรับแต่งและเพิ่มฟีเจอร์ให้กับประสบการณ์ PowerShell ของคุณ ในบทช่วยสอนนี้ คุณจะได้อธิบายวิธีการติดตั้ง PowerShell ล่าสุด และใช้ PSReadline และฟีเจอร์ขั้นสูงบางอย่าง
พร้อม? อ่านต่อเพื่อยกระดับประสบการณ์ PowerShell ของคุณไปอีกระดับ!
ข้อกำหนดเบื้องต้น
บทช่วยสอนนี้จะเป็นการสาธิตแบบลงมือปฏิบัติจริง หากคุณต้องการติดตาม โปรดแน่ใจว่าคุณมี:
- ระบบที่ใช้ Windows, macOS หรือ Linux - บทช่วยสอนนี้ใช้ Windows 10 แต่เวอร์ชันที่ใหม่กว่าก็ใช้งานได้เช่นกัน
- .NET 6 SDK - บทช่วยสอนนี้ใช้ v.6.0.203
- PowerShell 7+ - บทช่วยสอนนี้ใช้ PowerShell 7.2.4
การติดตั้งโมดูล PSReadline
ก่อนที่คุณจะสามารถใช้ประโยชน์จากโมดูล PSReadline คุณจะต้องติดตั้งก่อน และเช่นเดียวกับโมดูล PowerShell อื่นๆ คุณจะต้องเรียกใช้ Install-Module เพื่อติดตั้งโมดูล PSReadline
เวอร์ชัน 2.x ของ PSReadline มีคุณสมบัติมากมาย เช่น การระบายสีไวยากรณ์ การผูกคีย์แบบกำหนดเอง ฯลฯ คุณสามารถไปที่บันทึกประจำรุ่น PSReadline เพื่อดูรายการคุณสมบัติทั้งหมด
1. เปิด PowerShell ในฐานะผู้ดูแลระบบเพื่อให้แน่ใจว่าคุณสามารถเรียกใช้คำสั่งที่ต้องใช้สิทธิ์ระดับสูงได้
2. จากนั้น เรียกใช้คำสั่ง Install-Module ด้านล่างเพื่อติดตั้งโมดูล PSReadline จาก PowerShell Gallery
Install-Module PSReadLine -AllowPrerelease -Force3. ตอนนี้ให้รันคำสั่ง Get-InstalledModule ด้านล่างเพื่อตรวจสอบว่ามีการติดตั้งโมดูล PSReadline แล้ว
Get-InstalledModule -Name PSReadLineค้นหาคำสั่งผ่านประวัติ PowerShell
เมื่อติดตั้งโมดูล PSReadLine แล้ว คุณก็พร้อมที่จะสัมผัสประสบการณ์สภาพแวดล้อม PowerShell ของคุณแล้ว บางทีคุณอาจใช้คำสั่งเดียวกันหลายครั้งแล้ว ในกรณีดังกล่าว ให้เปิดใช้งานฟังก์ชันด้วย Set-PSReadLineKeyHandler cmdlet ที่ช่วยให้คุณค้นหาคำสั่งจากประวัติได้
ประวัติ PowerShell ติดตามคำสั่งทั้งหมดที่คุณเรียกใช้บนคอนโซล PowerShell ของคุณ และด้วยโมดูล PSReadLine คุณสามารถตั้งค่าปุ่มต่างๆ (โดยปกติจะเป็นปุ่มลูกศรขึ้นและลง) เพื่อค้นหาคำสั่งผ่านประวัติ
เรียกใช้แต่ละคำสั่งด้านล่างเพื่อเปิดใช้งานฟังก์ชันที่ช่วยให้คุณสามารถค้นหาคำสั่งผ่านประวัติได้ คำสั่งเหล่านี้ไม่มีเอาต์พุต แต่จับคู่ปุ่มลูกศรขึ้นและลงเพื่อทำการค้นหาคำสั่งในประวัติแบบย้อนกลับและไปข้างหน้า
# Enables Up Arrow key to search backward for commands in the history.
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
# Enables Up Arrow key to search forward for commands in the history.
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
จากนั้นกดปุ่มลูกศรขึ้นหรือลงแล้วกด Enter เมื่อคุณพบคำสั่งที่คุณต้องการเรียกใช้แล้ว
โปรดสังเกตด้านล่างว่า PowerShell ค้นหาประวัติของคุณสำหรับคำสั่งก่อนหน้าหรือถัดไปที่ตรงกับสิ่งที่คุณพิมพ์ลงไป คุณสมบัตินี้มีประโยชน์เมื่อคุณไม่ชอบการรันคำสั่งที่ยาวหรือซับซ้อนซ้ำๆ ซึ่งจะช่วยประหยัดเวลาของคุณ
การเชื่อมโยงฟังก์ชันเข้ากับคีย์
คุณเพิ่งแมปปุ่มลูกศรขึ้นและลงเพื่อค้นหาคำสั่งที่ลงทะเบียนในประวัติ PowerShell แต่คุณสามารถผูกคีย์อื่นเข้ากับฟังก์ชันที่แตกต่างกันได้หรือไม่? ใช่! Get-PSReadlineKeyHandler จะแสดงรายการฟังก์ชันที่ถูกผูกไว้และไม่ถูกผูกไว้
1. รันคำสั่งต่อไปนี้โดยไม่มีพารามิเตอร์ ซึ่งแสดงรายการการผูกแป้นพิมพ์เริ่มต้นตามค่าเริ่มต้น
Get-PSReadlineKeyHandlerด้านล่างนี้เป็นเพียงส่วนหนึ่งของรายการการเชื่อมโยงแป้นพิมพ์เริ่มต้นแบบยาว รายการนี้จะช่วยรีเฟรชหน่วยความจำของคุณว่าปุ่มใดเรียกว่าฟังก์ชันหรือคำสั่งใด
2. ตอนนี้ ให้รันคำสั่ง Get-PSReadlineKeyHandler เดียวกันด้านล่าง แต่คราวนี้จะผนวกพารามิเตอร์ -Unbound การทำเช่นนี้จะบอกคำสั่ง Get-PSReadlineKeyHandler ให้พิมพ์เฉพาะคีย์ที่ไม่ได้ผูกไว้
คุณจะเห็นรายการฟังก์ชันที่ยังไม่ได้แมปกับคีย์หรือชุดคีย์ใดๆ
Get-PSReadlineKeyHandler -Unboundคุณจะเห็นได้ว่าคุณได้รับรายการคีย์ที่ไม่ได้ผูกไว้จำนวนมากเช่นกัน
3. เลื่อนลงไปที่ส่วนฟังก์ชั่นประวัติแล้วคุณจะเห็นคำสั่ง BeginningOfHistory ไม่ถูกผูกไว้
4. ตอนนี้ ให้รันคำสั่ง Set-PSReadlineKeyHandler ต่อไปนี้ ซึ่งไม่ได้จัดเตรียมเอาต์พุตแต่จะผูกฟังก์ชัน BeginningOfHistory เข้ากับคีย์ผสม Ctrl+b
ตรวจสอบให้แน่ใจว่าไม่มีช่องว่างภายในคีย์ผสม Ctrl+b
โปรดทราบว่าการกดคีย์ผสมจะต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ คีย์ผสม Ctrl+b ไม่เหมือนกับ Ctrl+B คุณสามารถเลือกผูก Ctrl+B กับฟังก์ชันอื่นได้
Set-PSReadLineKeyHandler -Chord Ctrl+b -Function BeginningOfHistoryหากการเชื่อมโยงคีย์ของคุณมีมากกว่าหนึ่งลำดับคีย์ ให้แยกลำดับคีย์ด้วยโคลอน: Ctrl+X:Ctrl+L
5. สุดท้าย กดคีย์ผสม Ctrl+b และ PowerShell จะดึงคำสั่งแรกในประวัติของคุณ ดังที่แสดงด้านล่าง
การเปิดใช้งานคำแนะนำอัตโนมัติของคำสั่ง
หากมีคำสั่งมากมายในประวัติศาสตร์ของคุณ การค้นหาคำสั่งที่คุณต้องการรันใหม่อาจเป็นเรื่องที่ท้าทาย การค้นหาคำสั่งเป้าหมายของคุณด้วยปุ่มลูกศรขึ้นและลงจะกลายเป็นเรื่องน่าเบื่อหากคุณเคยรันคำสั่งมากมายก่อนหน้านี้ ดังนั้นคำแนะนำอัตโนมัติของคำสั่งจะส่งเสียงอย่างไร
PSReadline สามารถให้คำแนะนำประวัติคำสั่งด้วย PSReadLineOption คุณสมบัตินี้ทำให้การพิมพ์ของคุณเสร็จสมบูรณ์ตามคำสั่งที่คุณเคยใช้ในอดีต
เรียกใช้คำสั่งด้านล่าง ซึ่งไม่มีเอาต์พุต แต่เปิดใช้งานฟีเจอร์คำแนะนำประวัติคำสั่ง
Set-PSReadLineOption -PredictionSource History
ตอนนี้ ให้เริ่มพิมพ์ส่วนหนึ่งของคำสั่งเป้าหมายของคุณ แล้วคุณจะเห็น PowerShell แนะนำคำสั่งที่เป็นไปได้ตามประวัติของคุณ ข้อความเงาในบรรทัดจะแสดงสิ่งที่จะเสร็จสิ้นหากคุณกดปุ่มลูกศรขวา
กดแป้นลูกศรขวาเพื่อยอมรับข้อเสนอแนะแล้วกด Enter เพื่อรันคำสั่ง
การสร้างตัวทำนายบรรทัดคำสั่ง
การปรับแต่งการผูกคีย์ใน PowerShell เป็นวิธีที่ยอดเยี่ยมในการทำให้งานของคุณเร็วขึ้นและง่ายขึ้น PSReadLine 2.x.x ขยายคุณสมบัตินี้เพิ่มเติมโดยอนุญาตให้คุณสร้างตัวทำนายบรรทัดคำสั่งอัจฉริยะของคุณเอง
หากต้องการสร้างตัวทำนายบรรทัดคำสั่ง (CLI) คุณจะต้องใช้คุณสมบัติ Predictive IntelliSense บนโค้ดของคุณเองเพื่อสร้างตัวทำนายบรรทัดคำสั่ง (CLI) ตัวทำนาย CLI นี้ให้คำแนะนำในขณะที่คุณพิมพ์ว่า cmdlet หรือฟังก์ชันใดที่อาจเหมาะสมกับบริบทที่คุณกำลังดำเนินการอยู่ คำแนะนำจะขึ้นอยู่กับประวัติคำสั่งของคุณและปลั๊กอินโดเมนเฉพาะของคุณ
คุณต้องมี PowerShell 7.2+ และ PSReadLine 2.2.2+ เพื่อใช้ฟีเจอร์นี้ PowerShell เวอร์ชันเริ่มต้น 5.1 ไม่รองรับฟีเจอร์นี้
หากต้องการสร้างตัวทำนายบรรทัดคำสั่ง (โมดูล PowerShell):
1. รันคำสั่ง dotnet ต่อไปนี้เพื่อสร้างโปรเจ็กต์ .NET Class Library พื้นฐานในไดเร็กทอรีการทำงานของคุณ คุณสามารถตั้งชื่อโปรเจ็กต์ได้ตามที่คุณต้องการ แต่โปรเจ็กต์นี้เรียกว่า SamplePredictor สำหรับบทช่วยสอนนี้
dotnet new classlib --name SamplePredictor2. เปิดไฟล์ SamplePredictor.csproj ในโฟลเดอร์โปรเจ็กต์ของคุณ (SamplePredictor) ในโปรแกรมแก้ไขข้อความที่คุณต้องการ
3. ตอนนี้ แทนที่เนื้อหาของไฟล์ SamplePredictor.csproj ด้วยโค้ดด้านล่าง
รหัสนี้บอกคอมไพเลอร์ว่าโครงการนี้กำหนดเป้าหมาย .NET 6.0 และมีการอ้างอิงถึง PowerShell SDK
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.PowerShell.SDK" Version="7.2.0" />
</ItemGroup>
</Project>4. จากนั้น ลบไฟล์ Class1.cs เริ่มต้นในโฟลเดอร์โปรเจ็กต์ (SamplePredictor)
5. สร้างไฟล์ SamplePredictorClass.cs ใหม่บนโปรแกรมแก้ไขข้อความของคุณ และคัดลอกและวางโค้ดจากที่เก็บ ATA GitHub ที่รวมอยู่
รหัสนี้จะลงทะเบียนตัวทำนายของคุณด้วย PowerShell เพื่อให้สามารถใช้งานได้ จากนั้นจึงยกเลิกการลงทะเบียนเมื่อโมดูลถูกยกเลิกการโหลด ในเวลาเดียวกัน รหัสนี้จะส่งคืนข้อความ “HELLO WORLD ” เมื่อมีการเรียกใช้ตัวทำนายของคุณ
คุณจะสังเกตเห็นตัวแปรตัวระบุที่ประกาศใกล้กับด้านบนของบล็อคโค้ด ตัวระบุนี้เป็น GUID ที่ระบุตัวทำนายของคุณโดยไม่ซ้ำกัน เพื่อให้ PowerShell สามารถติดตามได้
6. ตอนนี้ ให้รันคำสั่ง dotnet build ด้านล่างภายในโฟลเดอร์โปรเจ็กต์ของคุณ (SamplePredictor) เพื่อสร้างโปรเจ็กต์ของคุณ คำสั่งนี้สร้างไฟล์แอสเซมบลีที่มีนามสกุล .dll (โมดูล PowerShell ของคุณ)
ไฟล์ .dll นี้อยู่ใน bin/Debug/net6.0 ภายในโฟลเดอร์โครงการของคุณ (SamplePredictor)
dotnet buildตอนนี้คุณมีโมดูล PowerShell ที่คุณจะต้องนำเข้าสู่เซสชัน PowerShell ของคุณ (ขั้นตอนที่แปด)
7. ไปที่โฟลเดอร์ SamplePredictor/bin/Debug/net6.0 ของคุณเพื่อตรวจสอบว่ามีไฟล์ .dll อยู่หรือไม่
8. รันคำสั่งด้านล่าง ซึ่งไม่มีเอาต์พุต แต่ดำเนินการดังต่อไปนี้:
- Set-PSReadLineOption cmdlet บอกให้ PowerShell ใช้ตัวทำนายที่คุณสร้างขึ้น (-PredictionSource HistoryAndPlugin)
- Import-Module cmdlet นำเข้าโมดูลของคุณไปยังเซสชัน PowerShell ของคุณ
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Import-Module .\bin\Debug\net6.0\SamplePredictor.dll9. ตอนนี้ให้รันคำสั่ง Get-PSSubsystem ด้านล่างเพื่อดูรายการตัวทำนายคำสั่งที่ลงทะเบียนไว้
Get-PSSubsystem -Kind CommandPredictorคุณจะเห็นตัวทำนายของคุณปรากฏในรายการดังที่แสดงด้านล่าง
10. สุดท้าย พิมพ์อะไรก็ได้ในข้อความแจ้ง แล้วคุณจะเห็นคำแนะนำเงาในบรรทัดปรากฏขึ้น ซึ่งเป็นการยืนยันว่าตัวทำนายของคุณกำลังทำงานอยู่ ตอนนี้คุณเขียนตัวทำนายคำสั่ง PowerShell สำเร็จแล้ว!
บทสรุป
ในบทช่วยสอนนี้ คุณได้เรียนรู้การติดตั้งโมดูล PSReadline และปรับแต่งคุณสมบัติของ PowerShell ตามที่คุณต้องการ คุณได้สร้างตัวทำนายคำสั่งแบบกำหนดเองโดยใช้ภาษา C# ซึ่งคุณสามารถปรับแต่งเพิ่มเติมได้โดยการเปลี่ยนข้อความที่ส่งออกหรือฟังก์ชันการทำงาน
ตอนนี้คุณมีความรู้ที่ดีเกี่ยวกับการทำงานกับโมดูล PSReadline แล้ว แต่อย่าหยุดอยู่แค่นี้! ทำไมไม่สร้างหน้าความช่วยเหลือสำหรับตัวทำนายของคุณโดยใช้ Microsoft Assistance Markup Language (MAML) แจ้งให้ผู้ใช้ของคุณทราบวิธีใช้ตัวทำนายและความสามารถของมันด้วยหน้าช่วยเหลือ!















