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

เกี่ยวกับการผูกพารามิเตอร์


คำอธิบายสั้น ๆ

การเชื่อมโยงพารามิเตอร์เป็นกระบวนการที่ PowerShell ใช้เพื่อกำหนดชุดพารามิเตอร์ที่กำลังถูกใช้ และเพื่อเชื่อมโยง (ผูก) ค่าเข้ากับพารามิเตอร์ของคำสั่ง ค่าเหล่านี้อาจมาจากบรรทัดคำสั่งและไปป์ไลน์

คำอธิบายยาว

กระบวนการผูกพารามิเตอร์เริ่มต้นโดยการผูกอาร์กิวเมนต์บรรทัดคำสั่ง

  1. ผูกพารามิเตอร์ที่มีชื่อ

    ค้นหาโทเค็นที่ไม่มีเครื่องหมายคำพูดบนบรรทัดคำสั่งที่ขึ้นต้นด้วยเครื่องหมายขีดกลาง หากโทเค็นลงท้ายด้วยเครื่องหมายทวิภาค จำเป็นต้องมีอาร์กิวเมนต์ หากไม่มีโคลอน ให้ดูที่ประเภทของพารามิเตอร์และดูว่าจำเป็นต้องมีอาร์กิวเมนต์หรือไม่ หากจำเป็นต้องมีค่า ให้พยายามแปลงประเภทของอาร์กิวเมนต์เป็นประเภทที่พารามิเตอร์ต้องการ และการแปลงสำเร็จ ให้ผูกพารามิเตอร์

  2. ผูกพารามิเตอร์ตำแหน่ง

    หากมีอาร์กิวเมนต์บรรทัดคำสั่งที่ไม่ได้ใช้ ให้มองหาพารามิเตอร์ที่ไม่ได้ผูกไว้ซึ่งรับพารามิเตอร์ตำแหน่งแล้วลองผูกพารามิเตอร์เหล่านั้น

หลังจากการผูกอาร์กิวเมนต์บรรทัดคำสั่ง PowerShell จะพยายามผูกอินพุตไปป์ไลน์ใดๆ มีสองวิธีที่ค่าจะถูกผูกจากไปป์ไลน์ พารามิเตอร์ที่ยอมรับอินพุตไปป์ไลน์มีแอตทริบิวต์หนึ่งหรือทั้งสองอย่างต่อไปนี้:

  • ValueFromPipeline - ค่าจากไปป์ไลน์ถูกผูกไว้กับพารามิเตอร์ตามประเภทของมัน ประเภทของอาร์กิวเมนต์จะต้องตรงกับประเภทของพารามิเตอร์
  • ValueFromPipelineByPropertyName - ค่าจากไปป์ไลน์ถูกผูกไว้กับพารามิเตอร์ตามชื่อ วัตถุในไปป์ไลน์ต้องมีคุณสมบัติที่ตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง ประเภทของคุณสมบัติต้องตรงกันหรือสามารถแปลงเป็นประเภทของพารามิเตอร์ได้

PowerShell พยายามผูกอินพุตไปป์ไลน์ตามลำดับต่อไปนี้:

  1. พยายามผูกพารามิเตอร์ ValueFromPipeline โดยไม่มีการแปลงประเภท:

    ผูกจากไปป์ไลน์ตามค่าด้วยการจับคู่ประเภทที่ตรงทั้งหมด หากคำสั่งมีอินพุตไปป์ไลน์และยังคงมีพารามิเตอร์ที่ไม่ถูกผูกไว้ ให้ลองเชื่อมโยงกับพารามิเตอร์ที่ตรงกับประเภททุกประการ

  2. พยายามผูกพารามิเตอร์ ValueFromPipelineByPropertyName โดยไม่มีการแปลงประเภท:

    หากไม่พบค่าที่ตรงกัน ให้ผูกจากไปป์ไลน์ตามชื่อด้วยการจับคู่แบบตรงทั้งหมด ค้นหาคุณสมบัติบนวัตถุอินพุตที่ตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง หากประเภทตรงกันทุกประการ ให้ผูกพารามิเตอร์

  3. หากไม่ได้ผูกอินพุตไปป์ไลน์ ให้ลองผูกพารามิเตอร์ ValueFromPipeline ด้วยการแปลงประเภท:

    พยายามแปลงอินพุตไปป์ไลน์เป็นประเภทที่ต้องการ หากการแปลงล้มเหลว พารามิเตอร์จะไม่ถูกผูกไว้

  4. หากไม่ได้ผูกอินพุตไปป์ไลน์ ให้ลองผูกพารามิเตอร์ ValueFromPipelineByPropertyName ด้วยการแปลงประเภท:

    ชื่อของคุณสมบัติจะต้องตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง หากประเภทอินพุตไม่ตรงกัน ให้ลองแปลงอินพุตให้เป็นประเภทที่ตรงกัน หากการแปลงล้มเหลว พารามิเตอร์จะไม่ถูกผูกไว้

เห็นภาพการเชื่อมโยงพารามิเตอร์

การแก้ไขปัญหาการเชื่อมโยงพารามิเตอร์อาจเป็นเรื่องที่ท้าทาย คุณสามารถใช้ Trace-Command cmdlet เพื่อแสดงภาพกระบวนการเชื่อมโยงพารามิเตอร์ ตัวอย่างต่อไปนี้แสดงวิธีการติดตามการเชื่อมโยงพารามิเตอร์สำหรับไปป์ไลน์แบบธรรมดา

Trace-Command -PSHost -Name ParameterBinding -Expression {
    Get-Item *.txt | Remove-Item
}

ผลลัพธ์จะแสดงทุกขั้นตอนของกระบวนการเชื่อมโยงพารามิเตอร์สำหรับคำสั่งใน นิพจน์ ผลลัพธ์อาจเป็นแบบละเอียด แต่สามารถช่วยให้คุณเข้าใจว่าทำไมพารามิเตอร์จึงไม่ถูกผูกไว้ตามที่คาดไว้ สำหรับตัวอย่างที่สมบูรณ์ โปรดดูบทความการเชื่อมโยงพารามิเตอร์ Visualize

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