Nhiều người thích sử dụng PowerShell chính vì nó cho phép họ thi hành những việc không thể làm với GUI của Windows. Mặc dù vậy, không thể lắc đầu rằng một số lệnh cmdlet của PowerShell có thể hơi nhàm chán hoặc phức tạp. Nhưng nếu có 1 cách để cũng đều có thể chỉnh sửa những lệnh cmdlet này và kiến chúng “hành xử” theo phương pháp bạn muốn? Dù tin hay không thì có 1 cách dễ dàng để thực hiện điều đó. Bạn có thể thay đổi hành vi của lệnh cmdlet bằng cách sửa đổi giá trị của các tham số mặc định PowerShell. Bài viết này sẽ hướng dẫn các bạn cách sử dụng tham số mặc định của PowerShell để thay đổi hành vi lệnh cmdlet.
Cảnh cáo
Trước khi bắt đầu, bạn cần lưu ý một số điều. Mặc dù việc thay đổi tham số mặc định PowerShell và hành vi của cmdelt rất thuận lợi nhưng có thể dẫn đến các vấn đề. Nếu bạn chạy một script và script đó giả thiết lệnh cmdlet đã sửa đổi sẽ hoạt động theo 1 cách nhất định, bạn có thể thu được kết quả không thể đoán trước được. Do đó, bạn nên đảm bảo thay đổi tham số mặc định PowerShell một cách cẩn thận.
Đánh giá nhanh
Có hai định nghĩa PowerShell mà bạn phải phải thích nghi để làm việc với tham số mặc định. Khái niệm đầu tiên là biến. Trong PowerShell, tên biến luôn bắt đầu bằng ký hiệu đô la và bạn cũng đều có thể viết nội dung của biến bằng cách nhập tên biến.
Khái niệm thứ 2 bạn cũng đều có thể đã thân thuộc đó là bảng băm. Bảng băm về cơ bản là một danh sách được tạo thành từ các cặp key/giá trị. Ví dụ, giả sử bạn mong muốn tạo một bảng băm chứa tên các bang nước Mỹ và chữ viết tắt của chúng. Dưới đây là code:
$StateList = @{}
$StateList.add(‘Florida’,’FL’)
$StateList.add(‘South Carolina’,’SC’)
$StateList.add(‘Georgia’,’GA’)
$StateList
Dòng đầu tiên của code tạo ra một bảng băm trống coi là $StateList . Ba dòng kế đến thêm các mục vào bảng. Mỗi mục được hình thành từ một key (tên bang) và một giá trị (chữ viết tắt của bang). Dòng cuối cùng liệt kê nội dung của bảng. Bạn có thể xem code hoạt động trong hình bên dưới.
Đây chỉ là một ví dụ rất dễ dàng và có rất nhiều cách khác để sử dụng bảng băm.
Làm việc với những tham số mặc định của PowerShell
PowerShell có một biến tích hợp sẵn được sử dụng để lưu trữ các tham số mặc định được dùng với lệnh cmdlet của nó. Biến này được xem là $PSDefaultParameterValues . Có thể bạn đã nhận biết từ giới thiệu mới đầu và tên của biến, đây không phải là biến thường thì mà là một bảng băm. Tuy nhiên, nếu nhập tên biến vào PowerShell, bạn sẽ thấy nhanh là bảng này trống, như hình bên dưới.
Vậy chúng ta có thể làm gì với biến $PSDefaultParameterValues này. Như đã đề cập ở trên, bạn cũng đều có thể kiểm soát hành vi của lệnh cmdlet PowerShell. Điểm duy nhất là bạn không thể vượt qua khả năng vốn có của lệnh cmdlet. Do vậy, hãy xem một ví dụ.
Ví dụ này, có thể không phải là thứ bạn muốn sử dụng trong cuộc đời thực, nhưng nó sẽ cho bạn thấy cách đơn giản để thay đổi hành vi của cmdlet 1 cách triệt để. Nếu nhập lệnh cmdlet Get-TimeZone trong PowerShell, bạn sẽ thấy tên của múi giờ mà PC hiện đang được cấu hình để sử dụng. Bạn có thể xem thí dụ này trong hình bên dưới.
Bây giờ chúng ta thay đổi lệnh cmdlet này để nó không hiển thị múi giờ hệ thống được cấu hình sử dụng mà không chỉ vậy là các múi giờ có sẵn. Để làm điều này, chúng ta cần cú pháp của cmdlet bằng cách dùng lệnh cmdlet Get-Help theo sau lệnh cmdlet Get-TimeZone . Bạn cũng có thể xem cú pháp của cmdlet bên dưới.
Cú pháp này kể cả một tham số được coi là ListAvailable . Hãy nhập lệnh dưới đây:
$PSDefaultParameterValues.Add(“Get-TimeZone:ListAvailable”,$True)
Phần đầu tiên của lệnh này chỉ dễ dàng thông báo cho PowerShell biết bạn mong muốn thêm 1 giá trị vào bảng băm, giống như đã làm với thí dụ từ viết tắt bang của Mỹ ở phần trước. Bảng băm này chứa một cặp key/giá trị. Trong trường hợp này key là tên lệnh cmdlet (Get-TimeZone) theo sau một dấu phẩy và tên của tham số bạn muốn thiết lập. Trong trường hợp này, tên tham số là ListAvailable. Phần thứ hai của lệnh cmdlet đây là giá trị bạn mong muốn gán cho tham số. Ở này là $True . Tham số ListAvailable thông thường chẳng cần một giá trị, do vậy chỉ định giá trị $True là cách bạn yêu cầu PowerShell sử dụng tham số đó mà không gắn giá trị cho nó.
Nếu bạn nhìn vào hình bên dưới, bạn sẽ thấy điều gì xảy ra khi chạy lệnh cmdlet Get-TimeZone.
Những điều cần ghi nhớ
Điều quan trọng nhất là cần hiểu việc thêm giá trị mới cho tham số mặc định PowerShell là để thay đổi hành vi mặc định của lệnh cmdlet, không xóa khả năng của cmdlet đó. Thậm chí khi bạn thay đổi lệnh cmdlet Get-TimeZone để hiện các múi giờ có sẵn thay vì hiện múi giờ hiện tại. Bạn vẫn cũng có thể hiển thị thông tin múi giờ ngày nay nếu xem thêm.
Một điều nữa bạn phải biết là có thể xóa tham số mặc định tùy chỉnh. Để xóa một mục duy nhất, sử dụng lệnh $PSDefaultParameterValues.Remove , theo sau bởi tên mục bạn mong muốn xóa. Ví dụ:
$PSDefaultParameterValues.Remove(“Get-TimeZone:ListAvailable”)
Thay vào đó, bạn cũng có thể xóa toàn bộ nội dung của bảng băm bằng phương pháp sử dụng lệnh này:
$PSDefaultParameterValues.Clear();
Bạn có thể xem tỉ dụ về cả 2 kỹ thuật dưới đây:
Bạn có thể xóa toàn bộ bảng băm hoặc xóa một mục duy nhất.
Thay đổi hành vi mặc định của lệnh cmdlet là điều bạn không thường làm nhưng khi cần bạn đã biết phương pháp thay đổi rồi đó.
Chúc các bạn thực hành thành công!
Xem thêm:
- Command Prompt (cmd) và PowerShell khác nhau như ra sao?
- 10 lệnh PowerShell giúp bạn quản lý máy tính từ xa hiệu quả nhất
- Khám phá 10 tính năng của PowerShell
Từ khóa bài viết: powershell, tham số mặc định powershell, thay đổi hành vi lệnh cmdlet, thủ thuật powershell, mẹo powershell, thay đổi lệnh powershell
Bài viết Cách sử dụng tham số mặc định của PowerShell để thay đổi hành vi lệnh được tổng hợp sưu tầm và biên tập bởi nhiều user – Sửa máy tính PCI – TopVn Mọi ý kiến đóng góp và phản hồi vui lòng gửi Liên Hệ cho chúng tôi để điều chỉnh. Xin cảm ơn.