เกี่ยวกับพารามิเตอร์
คำอธิบายสั้น ๆ
อธิบายวิธีการทำงานกับพารามิเตอร์คำสั่งใน PowerShell
คำอธิบายยาว
คำสั่ง PowerShell ส่วนใหญ่ เช่น cmdlets ฟังก์ชัน และสคริปต์ อาศัยพารามิเตอร์เพื่อให้ผู้ใช้สามารถเลือกตัวเลือกหรือป้อนข้อมูลได้ พารามิเตอร์เป็นไปตามชื่อคำสั่งและมีรูปแบบดังต่อไปนี้:
-<parameter_name> <parameter_value>
-<parameter_name>:<parameter_value>
ชื่อของพารามิเตอร์นำหน้าด้วยยัติภังค์ (-) ซึ่งจะส่งสัญญาณไปยัง PowerShell ว่าคำที่ตามหลังยัติภังค์นั้นเป็นชื่อพารามิเตอร์ ชื่อพารามิเตอร์และค่าสามารถคั่นด้วยช่องว่างหรืออักขระโคลอน พารามิเตอร์บางตัวไม่ต้องการหรือยอมรับค่าพารามิเตอร์ พารามิเตอร์อื่นๆ ต้องการค่า แต่ไม่ต้องการชื่อพารามิเตอร์ในคำสั่ง
ประเภทของพารามิเตอร์และข้อกำหนดสำหรับพารามิเตอร์เหล่านั้นจะแตกต่างกันไป หากต้องการค้นหาข้อมูลเกี่ยวกับพารามิเตอร์ของคำสั่ง ให้ใช้ Get-Help cmdlet ตัวอย่างเช่น เมื่อต้องการค้นหาข้อมูลเกี่ยวกับพารามิเตอร์ของ cmdlet Get-ChildItem ให้พิมพ์:
Get-Help Get-ChildItem
หากต้องการค้นหาข้อมูลเกี่ยวกับพารามิเตอร์ของสคริปต์ ให้ใช้เส้นทางแบบเต็มไปยังไฟล์สคริปต์ ตัวอย่างเช่น:
Get-Help $HOME\Documents\Scripts\Get-Function.ps1
Get-Help cmdlet ส่งคืนรายละเอียดต่างๆ เกี่ยวกับคำสั่ง รวมถึงคำอธิบาย ไวยากรณ์คำสั่ง ข้อมูลเกี่ยวกับพารามิเตอร์ และตัวอย่างที่แสดงวิธีใช้พารามิเตอร์ในคำสั่ง
คุณยังสามารถใช้พารามิเตอร์พารามิเตอร์ของ cmdlet Get-Help เพื่อค้นหาข้อมูลเกี่ยวกับพารามิเตอร์เฉพาะได้ หรือคุณสามารถใช้พารามิเตอร์ พารามิเตอร์ พร้อมกับค่าอักขระตัวแทน ( * ) เพื่อค้นหาข้อมูลเกี่ยวกับพารามิเตอร์ทั้งหมดของคำสั่ง ตัวอย่างเช่น คำสั่งต่อไปนี้ได้รับข้อมูลเกี่ยวกับพารามิเตอร์ทั้งหมดของ cmdlet Get-Member:
Get-Help Get-Member -Parameter *
ค่าพารามิเตอร์เริ่มต้น
พารามิเตอร์ทางเลือกมีค่าเริ่มต้น ซึ่งเป็นค่าที่ใช้หรือสันนิษฐานเมื่อไม่ได้ระบุพารามิเตอร์ในคำสั่ง
ตัวอย่างเช่น ค่าเริ่มต้นของพารามิเตอร์ ComputerName ของ cmdlets ต่างๆ คือชื่อของคอมพิวเตอร์ในระบบ ด้วยเหตุนี้ ชื่อคอมพิวเตอร์ในระบบจึงถูกใช้ในคำสั่ง เว้นแต่จะระบุพารามิเตอร์ ชื่อคอมพิวเตอร์
หากต้องการค้นหาค่าพารามิเตอร์เริ่มต้น โปรดดูหัวข้อวิธีใช้สำหรับ cmdlet คำอธิบายพารามิเตอร์ควรมีค่าเริ่มต้น
คุณยังสามารถตั้งค่าเริ่มต้นแบบกำหนดเองสำหรับพารามิเตอร์ใดๆ ของ cmdlet หรือฟังก์ชันขั้นสูงได้ สำหรับข้อมูลเกี่ยวกับการตั้งค่าเริ่มต้นแบบกำหนดเอง โปรดดู about_Parameters_Default_Values
ตารางแอตทริบิวต์พารามิเตอร์
เมื่อคุณใช้พารามิเตอร์ เต็ม พารามิเตอร์ หรือ ออนไลน์ ของ Get-Help cmdlet Get -Help แสดงตารางแอตทริบิวต์พารามิเตอร์พร้อมข้อมูลโดยละเอียดเกี่ยวกับพารามิเตอร์
ข้อมูลนี้ประกอบด้วยรายละเอียดที่คุณจำเป็นต้องทราบเพื่อใช้พารามิเตอร์ ตัวอย่างเช่น หัวข้อวิธีใช้สำหรับ cmdlet Get-ChildItem มีรายละเอียดต่อไปนี้เกี่ยวกับพารามิเตอร์ Path:
-Path <string[]>
Specifies a path of one or more locations. Wildcard characters are
permitted. The default location is the current directory (.).
Required? false
Position? 0
Default value Current directory
Accept pipeline input? true (ByValue, ByPropertyName)
Accept wildcard characters? true
ข้อมูลพารามิเตอร์ประกอบด้วยไวยากรณ์ของพารามิเตอร์ คำอธิบายของพารามิเตอร์ และแอตทริบิวต์ของพารามิเตอร์ ส่วนต่อไปนี้จะอธิบายคุณลักษณะของพารามิเตอร์
ต้องมีพารามิเตอร์
การตั้งค่านี้บ่งชี้ว่าพารามิเตอร์บังคับหรือไม่ กล่าวคือ คำสั่งทั้งหมดที่ใช้ cmdlet นี้ต้องมีพารามิเตอร์นี้หรือไม่ เมื่อค่าเป็น True และพารามิเตอร์หายไปจากคำสั่ง PowerShell จะแจ้งให้คุณระบุค่าสำหรับพารามิเตอร์
ตำแหน่งพารามิเตอร์
หากการตั้งค่า ตำแหน่ง ถูกตั้งค่าเป็นจำนวนเต็มที่ไม่เป็นลบ ก็ไม่จำเป็นต้องมีชื่อพารามิเตอร์ พารามิเตอร์ประเภทนี้เรียกว่าพารามิเตอร์ตำแหน่ง และตัวเลขจะระบุตำแหน่งที่พารามิเตอร์จะต้องปรากฏโดยสัมพันธ์กับพารามิเตอร์ตำแหน่งอื่นๆ พารามิเตอร์ที่มีชื่อสามารถแสดงในตำแหน่งใดก็ได้หลังชื่อ cmdlet ถ้าคุณรวมชื่อพารามิเตอร์สำหรับพารามิเตอร์ตำแหน่ง พารามิเตอร์สามารถแสดงรายการในตำแหน่งใดๆ หลังชื่อ cmdlet
ตัวอย่างเช่น cmdlet Get-ChildItem มีพารามิเตอร์ Path และ Exclude การตั้งค่า ตำแหน่ง สำหรับ เส้นทาง คือ 0 ซึ่งหมายความว่าเป็นพารามิเตอร์ตำแหน่ง การตั้งค่า ตำแหน่ง สำหรับ ยกเว้น มีชื่อว่า ชื่อ
ซึ่งหมายความว่า เส้นทาง ไม่ต้องการชื่อพารามิเตอร์ แต่ค่าพารามิเตอร์จะต้องเป็นค่าพารามิเตอร์แรกหรือค่าเดียวที่ไม่มีชื่อในคำสั่ง อย่างไรก็ตาม เนื่องจากพารามิเตอร์ Exclude เป็นพารามิเตอร์ที่มีชื่อ คุณสามารถวางไว้ในตำแหน่งใดก็ได้ในคำสั่ง
จากผลการตั้งค่า ตำแหน่ง สำหรับพารามิเตอร์ทั้งสองนี้ คุณสามารถใช้คำสั่งต่อไปนี้ได้:
Get-ChildItem -Path c:\techdocs -Exclude *.ppt
Get-ChildItem c:\techdocs -Exclude *.ppt
Get-ChildItem -Exclude *.ppt -Path c:\techdocs
Get-ChildItem -Exclude *.ppt c:\techdocs
หากคุณจะรวมพารามิเตอร์ตำแหน่งอื่นโดยไม่รวมชื่อพารามิเตอร์ พารามิเตอร์นั้นจะต้องวางตามลำดับที่ระบุโดยการตั้งค่า ตำแหน่ง
ประเภทพารามิเตอร์
การตั้งค่านี้ระบุชนิด Microsoft .NET Framework ของค่าพารามิเตอร์ ตัวอย่างเช่น หากประเภทเป็น Int32 ค่าพารามิเตอร์จะต้องเป็นจำนวนเต็ม หากชนิดเป็นสตริง ค่าพารามิเตอร์จะต้องเป็นสตริงอักขระ หากสตริงมีการเว้นวรรค ค่าจะต้องอยู่ในเครื่องหมายคำพูด หรือการเว้นวรรคต้องนำหน้าด้วยอักขระหลีก (`)
ค่าเริ่มต้น
การตั้งค่านี้ระบุค่าที่พารามิเตอร์จะถือว่าหากไม่มีการระบุค่าอื่น ตัวอย่างเช่น ค่าเริ่มต้นของพารามิเตอร์ Path มักจะเป็นไดเร็กทอรีปัจจุบัน พารามิเตอร์ที่จำเป็นไม่เคยมีค่าเริ่มต้น สำหรับพารามิเตอร์ทางเลือกจำนวนมาก ไม่มีค่าดีฟอลต์เนื่องจากพารามิเตอร์ไม่มีผลใดๆ หากไม่ได้ใช้
ยอมรับหลายค่า
การตั้งค่านี้ระบุว่าพารามิเตอร์ยอมรับค่าพารามิเตอร์หลายค่าหรือไม่ เมื่อพารามิเตอร์ยอมรับหลายค่า คุณสามารถพิมพ์รายการที่คั่นด้วยเครื่องหมายจุลภาคเป็นค่าของพารามิเตอร์ในคำสั่ง หรือบันทึกรายการที่คั่นด้วยเครื่องหมายจุลภาค (อาร์เรย์) ในตัวแปร จากนั้นระบุตัวแปรเป็นค่าพารามิเตอร์
ตัวอย่างเช่น พารามิเตอร์ ชื่อ ของ Get-Service cmdlet ยอมรับหลายค่า คำสั่งต่อไปนี้ถูกต้องทั้งคู่:
Get-Service -Name winrm, netlogon
$s = "winrm", "netlogon"
Get-Service -Name $s
ยอมรับอินพุตไปป์ไลน์
การตั้งค่านี้ระบุว่าคุณสามารถใช้ตัวดำเนินการไปป์ไลน์ (|) เพื่อส่งค่าไปยังพารามิเตอร์ได้หรือไม่
Value Description
----- -----------
False Indicates that you cannot pipe a value to the
parameter.
True (by Value) Indicates that you can pipe any value to the
parameter, just so the value has the .NET
Framework type specified for the parameter or the
value can be converted to the specified .NET
Framework type.
เมื่อพารามิเตอร์เป็น "True (ตามค่า)" PowerShell จะพยายามเชื่อมโยงค่าที่มีการไปป์กับพารามิเตอร์นั้น ก่อนที่จะพยายามวิธีอื่นในการตีความคำสั่ง
True (by Property Name) Indicates that you can pipe a value to the
parameter, but the .NET Framework type of the
parameter must include a property with the same
name as the parameter.
ตัวอย่างเช่น คุณสามารถไปป์ค่าไปยังพารามิเตอร์ ชื่อ ได้ก็ต่อเมื่อค่านั้นมีคุณสมบัติที่เรียกว่า ชื่อ
บันทึก
พารามิเตอร์ที่พิมพ์ซึ่งยอมรับอินพุตไปป์ไลน์ (ตามค่า) หรือ (โดย PropertyName) เปิดใช้งานการใช้บล็อกสคริปต์ delay-bind บนพารามิเตอร์
บล็อกสคริปต์ delay-bind จะทำงานโดยอัตโนมัติระหว่าง ParameterBinding ผลลัพธ์ถูกผูกไว้กับพารามิเตอร์ การเชื่อมโยงความล่าช้า ไม่ ทำงานสำหรับพารามิเตอร์ที่กำหนดเป็นประเภท ScriptBlock หรือ System.Object บล็อกสคริปต์จะถูกส่งผ่าน โดยไม่มี กำลังถูกเรียกใช้
คุณสามารถอ่านเกี่ยวกับการบล็อกสคริปต์ delay-bind ได้ที่นี่ about_Script_Blocks.md
ยอมรับอักขระตัวแทน
การตั้งค่านี้ระบุว่าค่าของพารามิเตอร์สามารถมีอักขระตัวแทนได้หรือไม่ เพื่อให้สามารถจับคู่ค่าพารามิเตอร์กับรายการที่มีอยู่ในคอนเทนเนอร์เป้าหมายได้มากกว่าหนึ่งรายการ
พารามิเตอร์ทั่วไป
พารามิเตอร์ทั่วไปคือพารามิเตอร์ที่คุณสามารถใช้กับ cmdlet ใดก็ได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับพารามิเตอร์ทั่วไป โปรดดูที่ about_CommonParameters
ดูเพิ่มเติม
- about_Command_syntax
- about_Comment_Based_Help
- about_Functions_ขั้นสูง
- about_Parameters_Default_Values
- about_ไปป์ไลน์
- about_Wildcards