Bạn đang phát minh lại bánh xe. Các tập lệnh PowerShell bình thường có các tham số bắt đầu bằng-
, nhưscript.ps1 -server http://devserver
Sau đó, bạn xử lý chúng trong param
phần ở đầu tập tin.
Bạn cũng có thể gán giá trị mặc định cho thông số của mình, đọc chúng từ bảng điều khiển nếu không có sẵn hoặc dừng thực thi tập lệnh:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Bên trong kịch bản, bạn có thể chỉ cần
write-output $server
vì tất cả các tham số trở thành các biến có sẵn trong phạm vi tập lệnh.
Trong ví dụ này, $server
nhận được một giá trị mặc định nếu tập lệnh được gọi mà không có nó, tập lệnh dừng nếu bạn bỏ qua -username
tham số và yêu cầu đầu vào đầu cuối nếu-password
bị bỏ qua.
Cập nhật: Bạn cũng có thể muốn chuyển một "cờ" (tham số đúng / sai boolean) cho tập lệnh PowerShell. Chẳng hạn, tập lệnh của bạn có thể chấp nhận "lực" trong đó tập lệnh chạy ở chế độ cẩn thận hơn khi không sử dụng lực.
Từ khóa cho điều đó là [switch]
loại tham số:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Trong kịch bản, bạn sẽ làm việc với nó như thế này:
if ($force) {
//deletes a file or does something "bad"
}
Bây giờ, khi gọi tập lệnh, bạn đặt tham số switch / flag như thế này:
.\yourscript.ps1 -server "http://otherserver" -force
Nếu bạn rõ ràng muốn nói rằng cờ không được đặt, có một cú pháp đặc biệt cho điều đó
.\yourscript.ps1 -server "http://otherserver" -force:$false
Liên kết đến tài liệu Microsoft có liên quan (đối với PowerShell 5.0; tho phiên bản 3.0 và 4.0 cũng có sẵn tại các liên kết):