Có một cách khác. Bạn có thể sử dụng $PSDefaultParameterValues
biến tự động, tồn tại (kể từ v3) để cung cấp các đối số mặc định mới cho lệnh ghép ngắn và các hàm nâng cao (không hoạt động với các hàm bình thường). Tuy nhiên, nó hoạt động với các tập lệnh, ngay cả khi gỡ lỗi trong ISE. Bạn phải khai báo [CmdletBinding()]
hoặc [Parameter()]
giống như bạn làm cho một hàm nâng cao.
Vì vậy, ví dụ của bạn,
[CmdletBinding()]
param ($G_ARCHIVE = $(throw "Need file to upload!"),
$G_LOGFILE = $(throw "Need logfile!"))
bạn sẽ thực thi một cái gì đó như thế này trên ISE Prompt:
$PSDefaultParameterValues.add("ExampleScript.ps1:G_ARCHIVE","File-to-upload.txt")
$PSDefaultParameterValues.add("ExampleScript.ps1:G_LOGFILE","Example.log")
Bạn cũng có thể đặt giá trị tham số thành một khối tập lệnh sẽ tự động thực thi tại thời điểm chạy:
$PSDefaultParameterValues["ExampleScript.ps1:G_LOGFILE"]={
"Example-{0:yyMMddHHmm}.log" -f [datetime]::Now
}
Biến là một bảng băm và áp dụng tất cả cú pháp chuẩn, ngoại trừ khóa phải có tên của tập lệnh (hoặc hàm nâng cao hoặc lệnh ghép ngắn) theo sau là dấu hai chấm rồi đến tên tham số. Bạn có thể đặt giá trị mặc định cho nhiều tập lệnh hoặc lệnh và nhiều tham số cho mỗi tập lệnh hoặc nhiều tham số (mỗi tham số là một mục nhập bảng mới).
Bằng cách này, bạn có thể nhấn F5để chạy script của mình như bình thường. Các tham số sẽ được lấy từ biến, vì vậy bạn không cần phải nhập bất cứ thứ gì vào.
Các trường hợp sử dụng khác cho $PSDefaultParameterValues
có thể là các tùy chỉnh, chẳng hạn như Get-History chỉ nhận được 10 mục nhập cuối cùng, trừ khi bạn chỉ định -Count
tham số trong lệnh. Bởi vì các mục nhập chỉ tồn tại trong phiên hiện tại, bạn sẽ muốn thêm các tùy chỉnh vào hồ sơ của mình . Bạn có thể đọc thêm bằng cách gõ Get-Help about_Parameters_Default_Values
vào lời nhắc hoặc xem thông tin tương tự trên TechNet .