เกี่ยวกับการผูกพารามิเตอร์
คำอธิบายสั้น ๆ
การเชื่อมโยงพารามิเตอร์เป็นกระบวนการที่ PowerShell ใช้เพื่อกำหนดชุดพารามิเตอร์ที่กำลังถูกใช้ และเพื่อเชื่อมโยง (ผูก) ค่าเข้ากับพารามิเตอร์ของคำสั่ง ค่าเหล่านี้อาจมาจากบรรทัดคำสั่งและไปป์ไลน์
คำอธิบายยาว
กระบวนการผูกพารามิเตอร์เริ่มต้นโดยการผูกอาร์กิวเมนต์บรรทัดคำสั่ง
ผูกพารามิเตอร์ที่มีชื่อ
ค้นหาโทเค็นที่ไม่มีเครื่องหมายคำพูดบนบรรทัดคำสั่งที่ขึ้นต้นด้วยเครื่องหมายขีดกลาง หากโทเค็นลงท้ายด้วยเครื่องหมายทวิภาค จำเป็นต้องมีอาร์กิวเมนต์ หากไม่มีโคลอน ให้ดูที่ประเภทของพารามิเตอร์และดูว่าจำเป็นต้องมีอาร์กิวเมนต์หรือไม่ หากจำเป็นต้องมีค่า ให้พยายามแปลงประเภทของอาร์กิวเมนต์เป็นประเภทที่พารามิเตอร์ต้องการ และการแปลงสำเร็จ ให้ผูกพารามิเตอร์
ผูกพารามิเตอร์ตำแหน่ง
หากมีอาร์กิวเมนต์บรรทัดคำสั่งที่ไม่ได้ใช้ ให้มองหาพารามิเตอร์ที่ไม่ได้ผูกไว้ซึ่งรับพารามิเตอร์ตำแหน่งแล้วลองผูกพารามิเตอร์เหล่านั้น
หลังจากการผูกอาร์กิวเมนต์บรรทัดคำสั่ง PowerShell จะพยายามผูกอินพุตไปป์ไลน์ใดๆ มีสองวิธีที่ค่าจะถูกผูกจากไปป์ไลน์ พารามิเตอร์ที่ยอมรับอินพุตไปป์ไลน์มีแอตทริบิวต์หนึ่งหรือทั้งสองอย่างต่อไปนี้:
- ValueFromPipeline - ค่าจากไปป์ไลน์ถูกผูกไว้กับพารามิเตอร์ตามประเภทของมัน ประเภทของอาร์กิวเมนต์จะต้องตรงกับประเภทของพารามิเตอร์
- ValueFromPipelineByPropertyName - ค่าจากไปป์ไลน์ถูกผูกไว้กับพารามิเตอร์ตามชื่อ วัตถุในไปป์ไลน์ต้องมีคุณสมบัติที่ตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง ประเภทของคุณสมบัติต้องตรงกันหรือสามารถแปลงเป็นประเภทของพารามิเตอร์ได้
PowerShell พยายามผูกอินพุตไปป์ไลน์ตามลำดับต่อไปนี้:
พยายามผูกพารามิเตอร์
ValueFromPipelineโดยไม่มีการแปลงประเภท:ผูกจากไปป์ไลน์ตามค่าด้วยการจับคู่ประเภทที่ตรงทั้งหมด หากคำสั่งมีอินพุตไปป์ไลน์และยังคงมีพารามิเตอร์ที่ไม่ถูกผูกไว้ ให้ลองเชื่อมโยงกับพารามิเตอร์ที่ตรงกับประเภททุกประการ
พยายามผูกพารามิเตอร์
ValueFromPipelineByPropertyNameโดยไม่มีการแปลงประเภท:หากไม่พบค่าที่ตรงกัน ให้ผูกจากไปป์ไลน์ตามชื่อด้วยการจับคู่แบบตรงทั้งหมด ค้นหาคุณสมบัติบนวัตถุอินพุตที่ตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง หากประเภทตรงกันทุกประการ ให้ผูกพารามิเตอร์
หากไม่ได้ผูกอินพุตไปป์ไลน์ ให้ลองผูกพารามิเตอร์
ValueFromPipelineด้วยการแปลงประเภท:พยายามแปลงอินพุตไปป์ไลน์เป็นประเภทที่ต้องการ หากการแปลงล้มเหลว พารามิเตอร์จะไม่ถูกผูกไว้
หากไม่ได้ผูกอินพุตไปป์ไลน์ ให้ลองผูกพารามิเตอร์
ValueFromPipelineByPropertyNameด้วยการแปลงประเภท:ชื่อของคุณสมบัติจะต้องตรงกับชื่อของพารามิเตอร์หรือหนึ่งในนามแฝง หากประเภทอินพุตไม่ตรงกัน ให้ลองแปลงอินพุตให้เป็นประเภทที่ตรงกัน หากการแปลงล้มเหลว พารามิเตอร์จะไม่ถูกผูกไว้
เห็นภาพการเชื่อมโยงพารามิเตอร์
การแก้ไขปัญหาการเชื่อมโยงพารามิเตอร์อาจเป็นเรื่องที่ท้าทาย คุณสามารถใช้ Trace-Command cmdlet เพื่อแสดงภาพกระบวนการเชื่อมโยงพารามิเตอร์ ตัวอย่างต่อไปนี้แสดงวิธีการติดตามการเชื่อมโยงพารามิเตอร์สำหรับไปป์ไลน์แบบธรรมดา
Trace-Command -PSHost -Name ParameterBinding -Expression {
Get-Item *.txt | Remove-Item
}
ผลลัพธ์จะแสดงทุกขั้นตอนของกระบวนการเชื่อมโยงพารามิเตอร์สำหรับคำสั่งใน นิพจน์ ผลลัพธ์อาจเป็นแบบละเอียด แต่สามารถช่วยให้คุณเข้าใจว่าทำไมพารามิเตอร์จึงไม่ถูกผูกไว้ตามที่คาดไว้ สำหรับตัวอย่างที่สมบูรณ์ โปรดดูบทความการเชื่อมโยงพารามิเตอร์ Visualize