รองรับอักขระตัวแทนในพารามิเตอร์ Cmdlet
บ่อยครั้ง คุณจะต้องออกแบบ cmdlet เพื่อทำงานกับกลุ่มของทรัพยากร แทนที่จะทำงานกับทรัพยากรเดียว ตัวอย่างเช่น cmdlet อาจจำเป็นต้องค้นหาไฟล์ทั้งหมดในที่เก็บข้อมูลที่มีชื่อหรือนามสกุลเหมือนกัน คุณต้องให้การสนับสนุนอักขระตัวแทนเมื่อคุณออกแบบ cmdlet ที่จะทำงานกับกลุ่มของทรัพยากร
บันทึก
การใช้อักขระตัวแทนบางครั้งเรียกว่า globbing
Windows PowerShell Cmdlets ที่ใช้ Wildcard
Windows PowerShell cmdlet จำนวนมากรองรับอักขระตัวแทนสำหรับค่าพารามิเตอร์ ตัวอย่างเช่น เกือบทุก cmdlet ที่มีพารามิเตอร์ ชื่อ หรือ เส้นทาง รองรับอักขระตัวแทนสำหรับพารามิเตอร์เหล่านี้ (แม้ว่า cmdlet ส่วนใหญ่ที่มีพารามิเตอร์ Path ยังมีพารามิเตอร์ LiteralPath ที่ไม่สนับสนุนอักขระตัวแทน) คำสั่งต่อไปนี้แสดงวิธีการใช้อักขระตัวแทนเพื่อส่งกลับค่าทั้งหมด cmdlets ในเซสชันปัจจุบันที่มีชื่อประกอบด้วยกริยารับ
Get-Command get-*อักขระตัวแทนที่รองรับ
Windows PowerShell รองรับอักขระตัวแทนต่อไปนี้
| Wildcard | Description | Example | Matches | Does not match |
|---|---|---|---|---|
| * | Matches zero or more characters, starting at the specified position | a* |
A, ag, Apple | |
| ? | Matches any character at the specified position | ?n |
An, in, on | ran |
| [ ] | Matches a range of characters | [a-l]ook |
book, cook, look | nook, took |
| [ ] | Matches the specified characters | [bn]ook |
book, nook | cook, look |
เมื่อคุณออกแบบ cmdlet ของที่รองรับอักขระตัวแทน อนุญาตให้รวมอักขระตัวแทนได้ ตัวอย่างเช่น คำสั่งต่อไปนี้ใช้ cmdlet Get-ChildItem เพื่อดึงข้อมูลแฟ้ม .txt ทั้งหมดที่อยู่ในโฟลเดอร์ c:\Techdocs และที่ขึ้นต้นด้วยตัวอักษร "a" ถึง "l"
Get-ChildItem c:\techdocs\[a-l]\*.txtคำสั่งก่อนหน้านี้ใช้ช่วงไวด์การ์ด [a-l] เพื่อระบุว่าชื่อไฟล์ควรขึ้นต้นด้วยอักขระ "a" ถึง "l" และใช้อักขระตัวแทน * เป็น ตัวยึดตำแหน่งสำหรับอักขระใดๆ ระหว่างอักษรตัวแรกของชื่อไฟล์และส่วนขยาย .txt
ตัวอย่างต่อไปนี้ใช้รูปแบบสัญลักษณ์แทนช่วงที่ไม่รวมตัวอักษร "d" แต่รวมตัวอักษรอื่นๆ ทั้งหมดตั้งแต่ "a" ถึง "f"
Get-ChildItem c:\techdocs\[a-cef]\*.txtการจัดการอักขระตามตัวอักษรในรูปแบบไวด์การ์ด
หากรูปแบบไวด์การ์ดที่คุณระบุมีอักขระตามตัวอักษรที่ไม่ควรตีความว่าเป็นอักขระไวด์การ์ด ให้ใช้อักขระ backtick (`) เป็นอักขระหลีก เมื่อคุณระบุอักขระตามตัวอักษรใน PowerShell API ให้ใช้ backtick เดียว เมื่อคุณระบุอักขระตามตัวอักษรที่พร้อมท์คำสั่ง PowerShell ให้ใช้ backticks สองตัว
ตัวอย่างเช่น รูปแบบต่อไปนี้มีสองวงเล็บที่ต้องยึดตามตัวอักษร
เมื่อใช้ใน PowerShell API ให้ใช้:
- "จอห์น สมิธ `[*`]"
เมื่อใช้จากพรอมต์คำสั่ง PowerShell:
- "จอห์น สมิธ ``[*``]"
รูปแบบนี้ตรงกับ "John Smith [การตลาด]" หรือ "John Smith [การพัฒนา]" ตัวอย่างเช่น:
PS> "John Smith [Marketing]" -like "John Smith ``[*``]"
True
PS> "John Smith [Development]" -like "John Smith ``[*``]"
True
ผลลัพธ์ Cmdlet และอักขระตัวแทน
เมื่อพารามิเตอร์ cmdlet รองรับอักขระตัวแทน การดำเนินการมักจะสร้างเอาต์พุตอาร์เรย์ ในบางครั้ง มันไม่สมเหตุสมผลเลยที่จะสนับสนุนเอาต์พุตอาร์เรย์เนื่องจากผู้ใช้อาจใช้เพียงรายการเดียว ตัวอย่างเช่น cmdlet Set-Location ไม่สนับสนุนเอาต์พุตอาร์เรย์เนื่องจากผู้ใช้ตั้งค่าตำแหน่งที่ตั้งเดียวเท่านั้น ในกรณีนี้ cmdlet ยังคงสนับสนุนอักขระตัวแทน แต่จะบังคับให้มีการแก้ไขไปยังตำแหน่งเดียว
ดูเพิ่มเติม
การเขียน Windows PowerShell Cmdlet
คลาสรูปแบบ Wildcard