ค้นหาเว็บไซต์

รองรับอักขระตัวแทนในพารามิเตอร์ 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

บทความที่เกี่ยวข้อง