PowerShell là gì? Cách sử dụng PowerShell

PowerShell là gì? Cách sử dụng PowerShell
5/5 - (8 bình chọn)

PowerShell là gì? Cách khởi động và sử dụng các lệnh trong PowerShell

PowerShell là gì?

PowerShell là một ngôn ngữ kịch bản và shell mã nguồn mở được xây dựng dựa trên công nghệ .NET của Microsoft. Nó nhằm mục đích giúp các chuyên gia công nghệ có thể không phải là nhà phát triển phần mềm xây dựng các tập lệnh và công cụ hiệu quả để giúp họ thực hiện công việc của mình tốt hơn.

Phát triển từ các ngôn ngữ như VBScript và các tệp hàng loạt, PowerShell được thiết kế để cung cấp giao diện dòng lệnh hạng nhất và ngôn ngữ tập lệnh dễ hiểu và dễ sử dụng.

PowerShell là gì?
Giao diện của PowerShell

PowerShell là một giải pháp tự động hóa tác vụ đa nền tảng được tạo thành từ trình bao dòng lệnh, ngôn ngữ kịch bản và khung quản lý cấu hình. PowerShell chạy trên Windows, Linux và macOS.

Shell là gì?

PowerShell là một trình bao lệnh hiện đại bao gồm các tính năng tốt nhất của các trình bao phổ biến khác. Không giống như hầu hết các shell chỉ chấp nhận và trả về văn bản, PowerShell chấp nhận và trả về các đối tượng .NET.

Sự phát triển của PowerShell

Năm 2002, Jeffrey Snover của Microsoft nhận ra rằng Windows không có giao diện dòng lệnh và khả năng viết kịch bản tốt như đối thủ cạnh tranh của nó là Linux. Để thay đổi điều này, Snover đã phát hành Bản tuyên ngôn Monad, một tài liệu phác thảo các kế hoạch của anh ấy cho thứ cuối cùng sẽ là PowerShell.

Từ năm 2002-2005, PowerShell được gọi là Monad và vẫn đang trong quá trình phát triển ban đầu. Năm 2006, từ ‘PowerShell’ xuất hiện lần đầu tiên với việc phát hành PowerShell 1.0. Kể từ thời điểm đó, nhóm PowerShell tại Microsoft đã sử dụng bản tuyên ngôn làm hướng dẫn để liên tục thêm các tính năng mới vào PowerShell.

Ban đầu chỉ có sẵn như một phần của Khung quản lý Windows, trước Windows XP và Windows Server 2012, PowerShell là một bản cài đặt riêng biệt. Nhưng kể từ Windows 7 và Windows Server 2012 R2, PowerShell đã được cài đặt theo mặc định trên tất cả các hệ điều hành Windows.

Lệnh (Commands)

Giống như các shells khác như cmd.exe, Bash và các trình khác, PowerShell có các lệnh nhị phân để thực hiện các hành động nhất định. Ví dụ: bạn có thể chạy lệnh để đọc tệp, ping máy tính, xóa registry key và hơn thế nữa.

PowerShell 7 là phiên bản mới nhất và nó có hơn 1500 mã nhị phân đã biên dịch được gọi là lệnh ghép ngắn. Lệnh ghép ngắn PowerShell rất phổ biến và là công cụ bạn có thể sử dụng để xây dựng các tập lệnh phức tạp.

Không giống như các lệnh ghép ngắn mà các nhà phát triển phần mềm xây dựng bằng các ngôn ngữ lập trình khác như C #, Joes trung bình có thể tạo các lệnh của riêng họ. Tích hợp trong ngôn ngữ PowerShell, các chức năng cho phép những người biết PowerShell tạo các lệnh tương tự như lệnh ghép ngắn.

Các nhà phát triển sử dụng các lệnh ghép ngắn và chức năng này để xây dựng các giải pháp từ đơn giản đến phức tạp nhằm tự động hóa mọi thứ bạn có thể nghĩ ra.

Đặc trưng của PowerShell là gì?

PowerShell được phát triển để thay cho chương trình dòng lệnh rất quen thuộc trên Windows là CMD sử dụng các file Windows Command là.cmd và.bat cùng các câu lệnh rất sơ khai và để xử lý những tác vụ đơn giản. PowerShell sẽ hoạt động trên môi trường .NET và .NET Framework bao gồm những câu lệnh và ngôn ngữ mã hóa.

Song song với PowerShell, Windows còn phát triển thêm Windows Power Shell ISE. ISE là viết tắt của môi trường mã hóa tích hợp bao gồm giao diện đồ họa cho người dùng lập trình nâng cao và tích hợp các công cụ khác nhau hỗ trợ bạn việc không cần nhập tất cả các lệnh trên một dòng lệnh.

Cách khởi động PowerShell

  • Cách 1: Bấm tổ hợp phím Windows + R, nhập vào “powershell” và enter để mở giao diện Windows PowerShell
  • Cách 2: Bấm phím Windows, nhập vào “powershell” và bấm enter để mở giao diện Windows PowerShell
Cách khởi động PowerShell

Tổng hợp các lệnh PowerShell hữu ích

Get-Help [help]

Nếu bạn chưa quen với PowerShell, bạn có thể gặp rắc rối; và trong những tình huống như vậy, Get-Help trở thành vị cứu tinh của bạn. Nó cung cấp thông tin cần thiết về lệnh ghép ngắn, lệnh, hàm, tập lệnh và luồng công việc của PowerShell.

Hơn nữa, thật dễ dàng: bạn cần gõ Get-Help theo sau lệnh, trong đó, bạn tìm kiếm các chi tiết. Ví dụ, bạn có thể nhận được thông tin về “Get-Process” bằng cách sử dụng Get-Help Get-Process.

Get-Command [gcm]

Windows PowerShell cho phép khám phá các lệnh và tính năng của nó bằng Get-Command. Nó hiển thị danh sách các lệnh của một tính năng cụ thể hoặc cho một mục đích cụ thể dựa trên thông số tìm kiếm của bạn.

Get-Command [gcm]

Bạn chỉ cần gõ Get-Command theo sau là truy vấn tìm kiếm của bạn trong PowerShell. Ví dụ, Get-Command * -service * hiển thị các lệnh với “-service” trong tên của nó. Hãy nhớ sử dụng các dấu hoa thị trên cả hai mặt truy vấn của bạn vì nótiện lợi hơn giúp tìm kiếm cái chưa biết.

Invoke-Command [icm]

Khi bạn muốn chạy lệnh hoặc tập lệnh PowerShell – cục bộ hoặc từ xa trên một hoặc nhiều (các) máy tính –  “Invoke-Command” là bạn của bạn. Nó rất dễ sử dụng và giúp bạn điều khiển hàng loạt máy tính.

Bạn phải nhập Invoke-Command theo sau là lệnh hoặc kịch bản với đường dẫn đầy đủ của nó. Ví dụ, bạn có thể chạy lệnh “Get-EventLog” bằng cách sử dụng Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50} hoặc trên máy tính từ xa “Server01” sử dụng Invoke-Command -ScriptBlock {Get-EventLog system -Newest 50} -ComputerName Server01.

Invoke-Expression [iex]

Invoke-Expression chạy một lệnh hoặc biểu thức khác. Nếu bạn đang cung cấp một biểu thức hoặc một chuỗi làm đầu vào của nó, lệnh này trước tiên sẽ đánh giá nó, sau đó chạy nó, nhưng cũng chỉ hoạt động cục bộ, không giống như lệnh trước đó.

Bạn phải nhập Invoke-Expression theo sau là một lệnh hoặc một biểu thức. Ví dụ, bạn có thể gán một biến “$ Command” với một chuỗi nói lệnh “Get-Process”. Khi bạn chạy  Invoke-Expression $Command, “Get-Process” được chạy như một lệnh trên máy tính cục bộ của bạn.

Invoke-WebRequest [iwr]

Bạn có thể tải xuống, đăng nhập và xóa thông tin trên các trang web và dịch vụ web trong khi làm việc trên Windows PowerShell bằng cách sử dụng Invoke-WebRequest.

Bạn phải sử dụng nó như Invoke-WebRequest theo sau là các tham số của nó. Ví dụ, bạn có thể nhận được các liên kết trên một trang web nhất định bằng cách sử dụng lệnh như (Invoke-WebRequest -Uri “https://docs.microsoft.com”).Links.Href.

Set-ExecutionPolicy

Mặc dù việc tạo và thực thi các tập lệnh (có phần mở rộng “ps1”) trong Windows PowerShell là có thể; tuy nhiên, có những hạn chế cho mục đích bảo mật. Nhưng bạn có thể chuyển đổi mức bảo mật bằng cách sử dụng lệnh Set-ExecutionPolicy.

Bạn có thể gõ Set-ExecutionPolicy theo sau là một trong bốn cấp độ bảo mật – Bị hạn chế, Đã ký từ xa, Đã ký tất cả hoặc Không hạn chế để sử dụng lệnh. Ví dụ: bạn có thể chỉ định trạng thái chính sách bị hạn chế bằng cách sử dụng Set-ExecutionPolicy -ExecutionPolicy Restricted.

Get-Item [gi]

Nếu bạn đang tìm kiếm thông tin về một mục tại bất kỳ vị trí cụ thể nào, hãy nói một tệp trên đĩa cứng của bạn, Get-Item là cách tốt nhất để lấy nó trong Windows PowerShell. Bạn phải biết rằng nó không nhận được nội dung của mục, chẳng hạn như các tệp và thư mục con trong một thư mục nhất định trừ khi bạn chỉ định rõ ràng.

Bạn phải nhập Get-Item theo sau là một đường dẫn hoặc một chuỗi cùng với các tham số của nó nếu có. Ví dụ: bạn có thể nhận tất cả các mục (tệp hoặc thư mục) bắt đầu bằng “M” trong thư mục hiện tại bằng cách sử dụng Get-Item M* . Cùng với nội dung của các thư mục, nó cũng có thể lấy nội dung của các khóa registry.

Copy-Item [copy]

Nếu bạn cần sao chép các tệp và thư mục trên đĩa lưu trữ hoặc các mục đăng ký và các khóa trong sổ đăng ký, bạn có thể sử dụng Copy-Item. Nó hoạt động tương tự như lệnh “cp” chúng ta có trong Command Prompt, nhưng nó tốt hơn nhiều.

Bạn có thể tận dụng lệnh Copy-Item để sao chép và đổi tên các mục trong cùng một lệnh – cung cấp tên mới làm đích. Ví dụ, bạn có thể sao chép và đổi tên “Services.htm” thành “MyServices.txt” bằng cách sử dụng Copy-Item “C:Services.htm” -Destination “C:MyDataMyServices.txt”.

Remove-Item [del]

Nếu bạn muốn xóa các mục như tệp, thư mục, chức năng và khóa và biến đăng ký, Remove-Item là lệnh cho bạn. Điều tôi thấy thú vị là, nó cung cấp các tham số để bao gồm và loại trừ các mục.

Bạn có thể tận dụng lệnh Remove-Item để xóa các mục từ các vị trí cụ thể bằng cách sử dụng các tham số. Ví dụ: bạn có thể xóa tệp “MyServices.txt” bằng lệnh Remove-Item “C:MyDataMyServices.txt”.

Get-Content [cat]

Khi bạn cần xem nội dung của tệp văn bản tại một vị trí cụ thể, bạn mở và đọc nó trong trình chỉnh sửa mã / văn bản như Notepad++. Trong Windows PowerShell, bạn có thể sử dụng Get-Content để truy xuất nội dung mà không cần mở tệp.

Ví dụ, bạn có thể lấy 50 dòng nội dung của “Services.htm”, sau đó bạn có thể sử dụng Get-Content “C:Services.htm” -TotalCount 50.

Set-Content [sc]

Bạn có thể lưu văn bản vào các tệp bằng cách sử dụng Set-Content, tương tự như lệnh “echo” của Bash Shell. Kết hợp với Get-Content, bạn cũng có thể truy xuất nội dung của một tệp và sao chép nó vào một tệp khác bằng lệnh này.

Ví dụ: bạn có thể nhập Set-Content để viết hoặc thay thế nội dung của một tệp có nội dung mới. Hơn nữa, bạn có thể kết hợp nó với ví dụ của lệnh trước đó để lưu đầu ra của nó vào một tệp mới có tên là “Sample.txt” bằng cách sử dụng Get-Content “C:Services.htm” -TotalCount 50 | Set-Content “Sample.txt”.

Get-Variable [gv]

Nếu bạn đang muốn sử dụng các biến trong Windows PowerShell, lệnh Get-Variable sẽ giúp bạn hình dung các giá trị của các biến. Nó cho thấy chúng dưới dạng bảng và cho phép bao gồm, loại trừ và sử dụng các ký tự đại diện.

Bạn có thể sử dụng lệnh này bằng cách nhập Get-Variable tiếp theo là các tùy chọn và tham số của nó. Ví dụ: bạn có thể truy xuất giá trị cho biến có tên “desc” bằng cách sử dụng mã sau: Get-Variable -Name “desc”.

Set-Variable [set]

Bạn có thể gán hoặc thay đổi / đặt lại giá trị của biến bằng lệnh Set-Variable. Như một phím tắt, bạn cũng có thể đặt một biến đơn giản bằng cách sử dụng định dạng ${ $Tên = Giá trị }$, giống như $desc = “A Description”.

Bạn có thể sử dụng lệnh Set-Variable tiếp theo là các tham số của nó để thiết lập một biến. Ví dụ, chúng ta có thể thiết lập giá trị cho một biến có tên là “desc” bằng cách sử dụng lệnh Set-Variable -Name “desc” -Value “A Description”.

Get-Process [gps]

Chúng tôi thường sử dụng Trình quản lý Tác vụ để tìm các quy trình đang chạy trên máy tính của chúng tôi. Trong Windows PowerShell, bất kỳ ai cũng có thể sử dụng Get-Process để lấy danh sách các tiến trình đang chạy, mà bạn có thể xử lý thêm nữa.

Get-Process [gps]

Bạn có thể viết lệnh như Get-Process cùng với truy vấn tìm kiếm của bạn. Ví dụ: nếu bạn cần thông tin về các quy trình có “khám phá” trong tên của nó, bạn có thể nhập Get-Process *explore* (lưu ý các dấu hoa thị).

Start-Process [saps]

Windows PowerShell giúp dễ dàng bắt đầu một hoặc nhiều quy trình trên máy tính của bạn. Tôi thấy lệnh này rất tiện dụng trong các ứng dụng kịch bản vì nó là một trong những lệnh phải có mà bạn sẽ cần để tự động hóa một tác vụ.

Bạn có thể gõ Start-Process theo sau là các tham số của nó để sử dụng lệnh. Ví dụ, bạn có thể khởi động Notepad bằng cách gõ Start-Process -FilePath “notepad” -Verb runAs trong Windows PowerShell.

Get-Service [gsv]

Khi bạn cần thông tin về các dịch vụ cụ thể (đang chạy hoặc dừng) trên máy tính của mình, bạn có thể sử dụng Dịch vụ Nhận. Nó hiển thị các dịch vụ được cài đặt trong hệ thống của bạn và cung cấp các tùy chọn để lọc và bao gồm và loại trừ chúng.

Nếu bạn muốn sử dụng lệnh này, bạn có thể nhập Get-Service theo sau là các tham số của nó. Ví dụ, gõ như sau Get-Service | Where-Object {$_.Status -eq “Running”} để có được các dịch vụ “chạy” trên hệ thống của bạn.

Start-Service [sasv]

Nếu bạn muốn bắt đầu một dịch vụ trên máy tính của bạn, lệnh Start-Service có thể giúp bạn thực hiện tương tự từ Windows PowerShell. Tôi thấy nó đủ mạnh để bắt đầu một dịch vụ ngay cả khi dịch vụ đó bị tắt trên máy tính của bạn.

Bạn cần phải chỉ định tên của dịch vụ trong khi sử dụng lệnh Start-Service. Ví dụ, Start-Service -Name “WSearch” bắt đầu dịch vụ “Windows Search” trên máy tính cục bộ của bạn.

Stop-Service [spsv]

Nếu bạn muốn dừng các dịch vụ đang chạy trên máy tính của mình, lệnh Stop-Service sẽ hữu ích. Bạn cần chỉ định tên của dịch vụ cùng với Stop-Service. Ví dụ, nhập Stop-Service -Name “WSearch” để ngừng dịch vụ “Tìm kiếm Windows” trên máy tính của bạn.

ConvertTo-HTML

PowerShell có thể cung cấp thông tin tuyệt vời về hệ thống của bạn. Tuy nhiên, nó chủ yếu được trình bày ở định dạng khó tiêu, nhưng bạn có thể sử dụng ConvertTo-HTML để tạo và định dạng báo cáo để phân tích hoặc gửi báo cáo cho ai đó.

Bạn có thể dùng ConvertTo-HTML cùng với đầu ra của một lệnh khác bằng cách sử dụng đường ống. Ví dụ Get-Service | ConvertTo-HTML -Property Name, Status > C:Services.htm hiển thị danh sách tất cả các dịch vụ và trạng thái của chúng dưới dạng báo cáo web, được lưu trữ trong tệp “Services.htm”.

Nguồn: PowerShell là gì? Cách sử dụng lệnh PowerShell

Bài viết này có hữu ích với bạn không?
Không