คุณกำลังคิดค้นล้อใหม่ สคริปต์ PowerShell ปกติมีพารามิเตอร์ที่ขึ้นต้นด้วย-
เช่นscript.ps1 -server http://devserver
จากนั้นคุณจัดการพวกเขาในparam
ส่วนในจุดเริ่มต้นของไฟล์
คุณยังสามารถกำหนดค่าเริ่มต้นให้กับ params ของคุณอ่านค่าจากคอนโซลหากไม่มีหรือหยุดการทำงานของสคริปต์:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
ภายในสคริปต์คุณสามารถทำได้ง่ายๆ
write-output $server
เนื่องจากพารามิเตอร์ทั้งหมดกลายเป็นตัวแปรที่มีอยู่ในขอบเขตสคริปต์
ในตัวอย่างนี้การ$server
รับค่าเริ่มต้นหากสคริปต์ถูกเรียกโดยไม่มีสคริปต์จะหยุดถ้าคุณไม่ใช้-username
พารามิเตอร์และขออินพุตเทอร์มินัลหาก-password
ไม่ได้ระบุไว้
อัปเดต: คุณอาจต้องการส่งผ่าน "แฟล็ก" (พารามิเตอร์บูลีนจริง / เท็จ) ไปยังสคริปต์ PowerShell ตัวอย่างเช่นสคริปต์ของคุณอาจยอมรับ "แรง" ซึ่งสคริปต์จะทำงานในโหมดระมัดระวังมากกว่านี้เมื่อไม่ใช้แรง
คำหลักสำหรับ[switch]
ประเภทพารามิเตอร์คือ:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
ภายในสคริปต์จากนั้นคุณจะทำงานกับมันดังนี้:
if ($force) {
//deletes a file or does something "bad"
}
ตอนนี้เมื่อเรียกสคริปต์คุณต้องตั้งค่าพารามิเตอร์สวิตช์ / แฟล็กดังนี้:
.\yourscript.ps1 -server "http://otherserver" -force
หากคุณต้องการระบุอย่างชัดเจนว่าไม่มีการตั้งค่าสถานะมีไวยากรณ์พิเศษสำหรับสิ่งนั้น
.\yourscript.ps1 -server "http://otherserver" -force:$false
ลิงค์ไปยังเอกสารประกอบของ Microsoft ที่เกี่ยวข้อง (สำหรับ PowerShell 5.0; รุ่น tho 3.0 และ 4.0 มีอยู่ที่ลิงค์):