Contents

Tập lệnh Windows PowerShell là gì?

Đường dẫn nhanh

⭐Tổng quan về tập lệnh PowerShell

⭐Cmdlet chi tiết

⭐Giải thích các tham số của PowerShell

⭐Tạo đường ống

⭐Lưu quy trình làm tập lệnh PS1

⭐PowerShell cũng có sẵn trên Linux và macOS

Bài học chính

PowerShell là ngôn ngữ kịch bản linh hoạt và mạnh mẽ được thiết kế để hỗ trợ tự động hóa các quy trình điện toán khác nhau, cung cấp cho người dùng phương tiện hiệu quả để hợp lý hóa quy trình làm việc của họ bằng cách cho phép họ thực thi các lệnh và thực hiện các thao tác trong một môi trường thống nhất.

Các lệnh Powershell, được gọi là lệnh ghép ngắn, mỗi lệnh có một chức năng riêng. Lệnh “Get-Command” cho phép người dùng duyệt qua mảng lệnh ghép ngắn có thể truy cập được.

PowerShell có thể được sử dụng trên nhiều hệ điều hành khác nhau bao gồm Windows, macOS và Linux.

PowerShell là ngôn ngữ kịch bản linh hoạt được thiết kế đặc biệt để tự động hóa các tác vụ điện toán khác nhau một cách dễ dàng, hiệu quả và đáng tin cậy trên các hệ thống dựa trên Windows. Tìm hiểu cách khai thác khả năng của nó bằng cách tạo các tập lệnh tùy chỉnh phù hợp để đáp ứng các yêu cầu cụ thể của bạn.

Tổng quan về tập lệnh PowerShell

Để bắt đầu tạo các tập lệnh PowerShell cơ bản trên hệ điều hành Windows, bạn bắt buộc phải hiểu ba khái niệm cơ bản:

⭐ Cmdlets: các lệnh chức năng đơn lẻ.

Các tham số dùng để mô tả các chi tiết cụ thể liên quan đến việc thực thi Lệnh ghép ngắn hoặc lệnh, bao gồm mục đích, thời gian, vị trí và phương pháp của chúng. Các tham số này cung cấp hướng dẫn cần thiết để thực hiện các nhiệm vụ một cách có kiểm soát và chính xác.

Đường dẫn là một tính năng mạnh mẽ trong PowerShell cho phép bạn chuyển đầu ra của một lệnh hoặc hàm làm đầu vào cho một lệnh hoặc hàm khác, tạo ra cấu trúc giống như chuỗi. Bằng cách sử dụng chức năng này, bạn có thể dễ dàng xây dựng các tác vụ tập lệnh phức tạp bằng cách kết nối nhiều lệnh với nhau, cho phép tự động hóa hiệu quả và sắp xếp hợp lý quy trình làm việc.

Bằng cách sử dụng cả ba thành phần, có thể tạo các tập lệnh thân thiện với người dùng để hợp lý hóa các quy trình khác nhau thông qua tự động hóa.

Trong ví dụ này, chúng tôi minh họa việc tích hợp nhiều lệnh ghép ngắn PowerShell để hoàn thành một mục tiêu cụ thể. Trình tự của các lệnh này được gọi là “đường dẫn”, trong đó mỗi lệnh riêng lẻ xử lý dữ liệu và chuyển nó sang lệnh tiếp theo cho đến khi đạt được kết quả mong muốn. Cách tiếp cận này cho phép người dùng thực hiện các hoạt động phức tạp với hiệu quả cao hơn bằng cách hợp lý hóa quy trình làm việc của họ và giảm sự can thiệp thủ công.

/vi/images/get-potato.jpg

Để thực hiện chuỗi thao tác này bằng PowerShell, người ta có thể sử dụng lệnh tương tự như sau:

 Get-Object Potato | Peel-Object | Chop-Object Chips| Cook-Object DeepFry `
  | Place-Object Bowl 

Lệnh ghép chi tiết

PowerShell được trang bị một bộ lệnh tích hợp cho phép người dùng thao tác với các đối tượng hệ thống và thực hiện nhiều thao tác. Các lệnh cốt lõi này trong PowerShell được gọi là Lệnh ghép ngắn.

PowerShell sử dụng một loại lệnh cụ thể được gọi là lệnh ghép ngắn, nhỏ gọn và thực hiện một chức năng đơn lẻ với sự hỗ trợ của phần mở rộng.dll. Các đơn vị lập trình thu nhỏ này có đặc điểm thuận lợi là được biên dịch chính xác, dẫn đến việc thực thi nhanh chóng khi so sánh với các hàm toàn diện hơn.

Việc sử dụng PowerShell cung cấp một loạt lệnh phong phú, bao gồm nhiều chức năng. Không cần thiết phải thành thạo mọi mệnh lệnh; thay vào đó, bạn nên bắt đầu bằng việc thu thập kiến ​​thức cơ bản và dần dần mở rộng kiến ​​thức đó trong quá trình trải nghiệm viết kịch bản của mình. Để đọc kỹ các lệnh Giao diện dòng lệnh (CLI) hiện được cài đặt trên hệ thống của bạn, hãy thực hiện hướng dẫn sau:

 Get-Command 

Khi xem xét các kết quả, người ta có thể nhận thấy rằng chúng tuân theo một kiểu cấu trúc động từ-danh từ. Sự sắp xếp như vậy tạo điều kiện thuận lợi cho việc hiểu chức năng của một Cmdlet cụ thể.

Powershell cung cấp nhiều lệnh ghép ngắn tích hợp khác nhau để thực hiện các tác vụ khác nhau. Lệnh Get-Command trả về một mảng gồm tất cả các lệnh có sẵn trong Powershell. Tương tự, lệnh Get-Process truy xuất thông tin về các tiến trình đang chạy trên hệ thống của bạn. Ngoài ra, lệnh ghép ngắn Copy-Item cho phép người dùng chuyển một hoặc nhiều tệp từ một vị trí sang một thư mục đích được chỉ định khác.

Các công cụ dòng lệnh đi kèm với tài liệu toàn diện bao gồm các ví dụ minh họa, hướng dẫn sử dụng chi tiết và giải thích chuyên sâu liên quan đến khả năng của chúng.

Để có thêm thông tin về một Cmdlet cụ thể và cách sử dụng nó, việc thực hiện lệnh sau sẽ cung cấp cho bạn thông tin chi tiết toàn diện:

 Get-Help <name-of-cmdlet> 

Giải thích các tham số PowerShell

Các lệnh PowerShell có thể được thực thi với mức độ cụ thể khác nhau thông qua việc sử dụng các tham số. Các tham số này cho phép kiểm soát tốt hơn việc thực thi các lệnh và chức năng bằng cách chỉ định các yếu tố như mục tiêu, thời gian, vị trí và phương pháp.

Một minh họa cho điều này là lấy danh sách các quy trình hiện đang hoạt động trong hệ điều hành bằng cách sử dụng lệnh “Get-Process.

/vi/images/get-process-cmdlet.jpg

Để có được một quy trình cụ thể bằng cách sử dụng các tham số dòng lệnh, người ta có thể sử dụng thuộc tính “Tên” kết hợp với lệnh ghép ngắn “Get-Process”. Như một minh họa, để truy xuất tất cả các phiên bản của ứng dụng Slack, người dùng sẽ nhập lệnh sau:mathematicaGet-Process-Name “ Slack

 Get-Process -Name Slack 

Khi thực hiện lệnh, bạn sẽ thấy một danh sách các quy trình mang nhãn “slack”.

/vi/images/get-process-with-parameter.jpg

Một số biến nhất định có một đặc điểm được gọi là “tính vị trí”, theo đó việc chỉ định chúng là bắt buộc hoặc tùy chọn được xác định theo ngữ cảnh chứ không phải bằng nhãn rõ ràng. Ví dụ: khi gọi lệnh Get-Process-Name Slack , việc bỏ sót tiêu đề của tham số sẽ dẫn đến việc đưa nó vào dưới dạng vị trí, do đó cho phép nó được hiểu trong ngữ cảnh nhất định mà không cần nhãn cụ thể. Tương tự, khi thực thi lệnh Get-Process Slack , việc thiếu thông số kỹ thuật cho tham số cũng khiến tham số đó có vị trí, cho phép hiểu nó theo hoàn cảnh xung quanh mà không yêu cầu mã định danh chính thức.

Mỗi Commandlet có một bộ tham số đầu vào được chấp nhận riêng, có thể được xem bằng cách sử dụng lệnh Get-Help và điều hướng đến phần Cú pháp cho Commandlet cụ thể đó.

 Get-Help Get-Process 

Bạn sẽ được cung cấp một loạt các phương thức có sẵn để thực thi Lệnh đã chỉ định, bao gồm nhiều tham số và tùy chọn khác nhau.

/vi/images/cmdlet-syntax-parameters.jpg

Trong trường hợp này, lệnh ghép ngắn Get-Process có khả năng chấp nhận nhiều tham số đầu vào khác nhau, bao gồm nhưng không giới hạn ở Tên, Id, Tên máy tính, Mô-đun và FileVersionInfo, cùng nhiều tham số khác. Các tham số này đại diện cho các thuộc tính khác nhau có thể được sử dụng cùng với lệnh ghép ngắn Get-Process để truy xuất thông tin về các quy trình đang chạy trên hệ thống máy tính.

Biểu tượng

|

Tên

|

Nghĩa

—|—|— |

Trống

|

Tham số không chấp nhận đầu vào

-

|

Dấu gạch nối

|

Cho biết tên tham số

|

Dấu ngoặc nhọn

|

Trình giữ chỗ cho văn bản

[]

|

Dấu ngoặc đơn

|

Một tham số có khả năng chứa nhiều giá trị, thường được gọi là biến hoặc trường, đại diện cho một phần tử có thể bị thay đổi trong quá trình thực thi chương trình và có thể có tác động đến đầu ra hoặc hành vi của nó.

{}

|

Niềng răng

|

Tham số chấp nhận một tập hợp các giá trị

Một số tham số nhất định sẽ chỉ định loại đầu vào dự kiến, bao gồm chuỗi, số nguyên, boolean và ngày tháng. Để minh họa, hãy xem xét đoạn mã sau:

 Get-Process [[-Name] <string[]>] 

Tham số Tên có khả năng chứa nhiều giá trị chuỗi, trong khi ngược lại, ràng buộc nói trên hạn chế nó chỉ chấp nhận một giá trị duy nhất.

 Get-Process -Id <int[]> 

Tham số “Id” được thiết kế để chấp nhận một hoặc nhiều giá trị số nguyên, có thể được sử dụng cho nhiều mục đích khác nhau trong các ứng dụng lập trình.

Để tinh chỉnh thêm việc tìm kiếm các quy trình và thu được tập kết quả chính xác hơn, người ta có thể sử dụng tham số “ID” trong lệnh PowerShell “Get-Process”. Tham số cụ thể này yêu cầu đầu vào là một giá trị nguyên, như được chỉ định bởi cú pháp của nó. Bằng cách kết hợp tham số này vào lệnh, người dùng có thể xác định quy trình chính xác hơn trong danh sách các tùy chọn có sẵn.

 Get-Process -Id 3016 

Sau đó, bạn sẽ quan sát một trường hợp duy nhất trong bảng liệt kê:

/vi/images/using-id-parameter.jpg

Tạo đường ống

PowerShell xử lý thông tin dưới dạng các thực thể, được tổ chức thông qua một loạt lệnh hoặc chức năng được kết nối với nhau bằng ký hiệu ống dẫn (|). Việc lựa chọn các lệnh nhỏ thích hợp và sắp xếp chúng một cách mạch lạc bằng cách sử dụng quy trình đóng vai trò then chốt trong việc tạo ra một tập lệnh hiệu quả.

Đây là ví dụ về cách bạn có thể tạo một tập lệnh đơn giản sắp xếp và hiển thị 5 tệp lớn nhất trong một thư mục nhất định dựa trên kích thước của chúng, bằng cách sử dụng Python:pythonimport osimportshuildef get_large_files(directory):# Lấy danh sách tất cả các tệp trong thư mụcfile_list=os.listdir(directory)# Sắp xếp danh sách theo kích thước tệp (tính bằng byte)sorted_by_size=được sắp xếp(file_list, key=os.path.getsize, Reverse=True)# Chỉ trả về n phần tử đầu tiên của danh sách được sắp xếpreturnsort_by_size[:5 ]# Cách sử dụng ví dụ:directory=’/path/to/your/folder/’top_

/vi/images/sort-largefiles-script.jpg

Người ta có thể sử dụng cấu hình đường ống trong PowerShell để hiển thị cấu trúc cụ thể để hoàn thành nhiệm vụ này. Quy trình nói trên bao gồm nhiều thành phần khác nhau phối hợp với nhau để đạt được kết quả mong muốn.

 Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
 | Select-Object -First 5 | Format-Table Name, Length -AutoSize 

Lưu đường dẫn dưới dạng tập lệnh PS1

Để đảm bảo tính hiệu quả và khả năng truy cập dễ dàng, bạn có thể muốn bảo toàn quy trình vận hành của mình bằng cách chuyển đổi nó thành tệp PowerShell Script (.ps1) để sử dụng trong tương lai. Điều này sẽ loại bỏ nhu cầu nhập thủ công lặp đi lặp lại mỗi khi quy trình được sử dụng.

Một phương pháp đơn giản để tạo tệp Tập lệnh PowerShell (PS1) là dán trực tiếp tập lệnh mong muốn vào trình soạn thảo văn bản, chẳng hạn như Notepad, sau đó lưu tập lệnh đó bằng phần mở rộng tệp “.ps1”.

/vi/images/creating-script-with-notepad.jpg

Để sử dụng tập lệnh PS1 trong PowerShell, hãy thực thi lệnh ./ScriptName.ps1 theo sau là dấu hai chấm.

/vi/images/using-ps1-script.jpg

Để giải quyết mọi vấn đề về quyền có thể phát sinh trong khi thực thi tập lệnh của bạn, bạn nên thực thi PowerShell với các đặc quyền quản trị. Điều này có thể được thực hiện bằng cách bắt đầu phiên PowerShell nâng cao, sau đó tiến hành thực thi tập lệnh của bạn trong ngữ cảnh này.

Xin chúc mừng, giờ đây bạn đã có thể tạo các tập lệnh PowerShell PS1.

##PowerShell cũng có sẵn trên Linux và macOS

PowerShell đã nổi lên như một ngôn ngữ lập trình dành cho người mới bắt đầu được săn đón nhờ giao diện thân thiện với người dùng và khả năng mở rộng. Trước đây, nó chỉ dành riêng cho hệ sinh thái Windows; tuy nhiên, các bản cập nhật gần đây đã cho phép khả dụng của PowerShell trên nhiều nền tảng khác nhau như macOS và nhiều bản phân phối Linux. Bản mở rộng này nâng cao hơn nữa tính linh hoạt của PowerShell, cho phép người dùng chuyển đổi liền mạch các kỹ năng của họ giữa các hệ điều hành khác nhau.