Microsoft đã thay thế Command Prompt tiêu chuẩn bằng Windows PowerShell – một công cụ dựa trên giao diện dòng lệnh (CLI) mạnh mẽ hơn rất nhiều, có thể được sử dụng để viết kịch bản (scripting) và tự động hóa các tác vụ. Bên cạnh việc tự động hóa các tác vụ phức tạp hoặc lặp đi lặp lại, chức năng của PowerShell có thể được mở rộng với sự trợ giúp của các module và cmdlet. Nếu bạn đang tìm cách khám phá những khả năng của Windows PowerShell, hoặc bạn đã là người dùng thành thạo muốn tận dụng tối đa các tính năng của nó, việc nắm vững một số lệnh PowerShell cơ bản là điều cần thiết để giúp công việc của bạn trở nên dễ dàng hơn, dù là khi lập trình bằng ngôn ngữ này hay sử dụng giao diện dòng lệnh.
Nếu bạn là người quản lý hệ thống, tự động hóa tác vụ hoặc thực hiện các công việc quản trị, bạn có thể hưởng lợi rất nhiều từ việc biết một vài lệnh nhanh chóng để giúp cuộc sống của mình dễ dàng hơn. Tự động hóa các tác vụ cần thực hiện lặp đi lặp lại, truy cập các điều khiển chi tiết trên Windows và quản lý nhiều hệ thống cùng lúc đều là những công việc có thể trở nên đơn giản hơn nhiều với PowerShell. Sau khi sử dụng PowerShell rộng rãi trong vài tháng qua, dưới đây là một số lệnh PowerShell chắc chắn sẽ giúp bạn tiết kiệm thời gian và công sức.
Get-Process
Thu thập thông tin về các tiến trình đang chạy
Giao diện lệnh Get-Process trên PowerShell hiển thị thông tin tiến trình đang chạy
Lệnh Get-Process
hữu ích cho những ai muốn truy xuất thông tin về các tiến trình đang chạy trên máy tính cục bộ hoặc trên một máy chủ từ xa. Chạy lệnh này sẽ lấy về các chi tiết như tên tiến trình, ID tương ứng, mức sử dụng CPU, mức tiêu thụ bộ nhớ, v.v., liên kết với tiến trình đó.
Tất cả thông tin này có thể được sử dụng để giám sát hiệu suất hệ thống, xác định các dịch vụ đang tiêu tốn nhiều tài nguyên hoặc thậm chí tìm ra nguyên nhân gây lỗi của một dịch vụ hay ứng dụng. Bạn có thể sử dụng nhiều biến thể của lệnh để có được thông tin phù hợp. Dưới đây là một số ví dụ:
Get-Process [[-Name] <string>] [-ComputerName <string>] [-Module] [-FileVersionInfo] [<commonparameters>]
Hãy tùy chỉnh lệnh này theo yêu cầu của bạn để có kết quả chính xác. Ví dụ, lệnh sau sẽ lấy về tất cả các tiến trình đang tiêu thụ hơn 1 GB bộ nhớ:
Get-Process | Where-Object { $_.WorkingSet64 -gt 1GB }
Tương tự, bạn có thể xem tất cả các tiến trình từ Google Chrome bằng cách sử dụng:
Get-Process -Name chrome
Get-Command
Xem danh sách tất cả các lệnh có sẵn
Cửa sổ PowerShell hiển thị danh sách các lệnh Get-Command
Get-Command
là cách tốt nhất để liệt kê tất cả các lệnh có sẵn trong cửa sổ PowerShell – bao gồm cmdlets, hàm (functions), bí danh (aliases) và script. Thông tin được hiển thị cùng với nguồn và loại. Bằng cách sử dụng lệnh này, người dùng có thể khám phá các lệnh cho các tác vụ cụ thể, tìm hiểu các module khác nhau và có cái nhìn tổng quan hơn về các công cụ có sẵn trong môi trường PowerShell của họ.
Sử dụng cú pháp sau để chạy lệnh:
Get-Command [[-Name] <string>] [-Module <string>] [-CommandType <commandtypes>] [<commonparameters>]
Bạn có thể sửa đổi nó như sau để liệt kê tất cả các cmdlet trong một module cụ thể:
Get-Command -Module Microsoft.PowerShell.Management
Set-ExecutionPolicy
Đặt điều kiện cho phép script được chạy
Ví dụ sử dụng lệnh Set-ExecutionPolicy trong PowerShell để cấu hình chính sách thực thi script
Chạy lệnh Set-ExecutionPolicy
cấu hình chính sách thực thi script của PowerShell, quyết định liệu script có thể chạy hay không và trong điều kiện nào. Về cơ bản, nó xác định xem bạn có thể chạy các script đã ký (signed) hay chưa ký (unsigned). Lệnh này đóng vai trò quan trọng trong việc cho phép thực thi script khi tự động hóa tác vụ, đồng thời đảm bảo các biện pháp bảo mật phù hợp được duy trì.
Nếu bạn là người dùng cao cấp, bạn thường cần điều chỉnh chính sách để chạy các script tùy chỉnh. Đó là lúc bạn sẽ thấy lệnh này cực kỳ hữu ích. Cú pháp như sau:
Set-ExecutionPolicy [-ExecutionPolicy] <executionpolicy> [-Scope <executionpolicyscope>] [-Force] [<commonparameters>]
Sử dụng lệnh sau để tạm thời bỏ qua các hạn chế cho một phiên duy nhất:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
Get-EventLog
Khắc phục sự cố dễ dàng
Kết quả của lệnh Get-EventLog trên PowerShell hiển thị nhật ký sự kiện hệ thống
Khi bạn đang cố gắng khắc phục lỗi hoặc kiểm tra hoạt động hệ thống, điều đầu tiên bạn nên xem xét là nhật ký hệ thống. Đó chính xác là những gì lệnh Get-EventLog
mang lại cho bạn. Nó cung cấp quyền truy cập vào các sự kiện chi tiết liên quan đến hệ thống, như cảnh báo, lỗi, vi phạm bảo mật, v.v. Thông tin này có thể được sử dụng để chẩn đoán và giải quyết vấn đề.
Cú pháp cơ bản như sau:
Get-EventLog [-LogName] <string> [-Newest <int32>] [-After <datetime>] [-Before <datetime>] [-EntryType <string>] [<commonparameters>]
Tuy nhiên, bạn có thể sửa đổi nó để phù hợp với yêu cầu của mình. Ví dụ, sử dụng lệnh này để lấy 10 sự kiện nhật ký hệ thống gần đây nhất:
Get-EventLog -LogName System -Newest 10
Hoặc lệnh này để tìm lỗi trong nhật ký ứng dụng:
Get-EventLog -LogName Application -EntryType Error
Where-Object
Lọc và tinh chỉnh dữ liệu
Mô tả lệnh Where-Object trong PowerShell, dùng để lọc đối tượng trong pipeline
Nếu bạn muốn lọc các đối tượng trong một pipeline, lệnh Where-Object
là thứ bạn cần. Bạn có thể chỉ định các điều kiện cho phép thu hẹp kết quả xuống chỉ còn dữ liệu liên quan. Lệnh này hữu ích cho việc phân tích, báo cáo hoặc tự động hóa. Cùng với việc tinh chỉnh các tập dữ liệu lớn, nó cũng có thể được sử dụng để tự động giám sát bằng cách lọc các điều kiện cụ thể, như lỗi trong nhật ký.
Đây là một cú pháp mẫu:
Where-Object [-FilterScript]
Kết luận
Windows PowerShell với các lệnh mạnh mẽ và linh hoạt đã trở thành một công cụ không thể thiếu đối với bất kỳ ai làm việc với hệ thống Windows, từ quản trị viên đến nhà phát triển. Nắm vững những lệnh cơ bản như Get-Process
để giám sát, Get-Command
để khám phá, Set-ExecutionPolicy
để quản lý bảo mật, Get-EventLog
để khắc phục sự cố và Where-Object
để tinh lọc dữ liệu sẽ giúp bạn tối ưu hóa đáng kể công việc hàng ngày, tiết kiệm thời gian và tăng hiệu suất.
Hãy bắt đầu thực hành ngay hôm nay để khai thác tối đa sức mạnh của PowerShell. Bạn đã sử dụng PowerShell như thế nào để tối ưu công việc của mình? Hãy chia sẻ kinh nghiệm và những lệnh yêu thích của bạn trong phần bình luận bên dưới để cùng cộng đồng Sổ Tay Thủ Thuật học hỏi nhé!