Bắt đầu làm quen với Windows PowerShell

by My Love

20/12/2019, 3:38 PM   |    20/12/2019, 3:38 PM   |    918   |    0

    Windows PowerShell là một công cụ tự động hóa và ngôn ngữ kịch bản hướng đối tượng vô cùng mạnh mẽ, với những bạn quản tri mạng và hệ thống server thì PowerShell lại càng hữu ích hơn nữa. Windows PowerShell được mặc định cài đặt hầu hết trong mọi HĐH từ Windows 7, Windows Server 2008R2 trở đi. Bạn nên kiểm tra phiên bản của PowerShell trong máy của mình, và nên sử dụng các phiên bản mới để được hỗ trợ nhiều tính năng, bạn có thể tham khảo hướng dẫn cài đặt Windows PowerShell 5.1 . Trong bài viết này sẽ giới thiệu một số khái niệm, tính năng cơ bản cho những bạn mới tiếp cận với Windows PowerShell.

1. Bắt đầu với Windows PowerShell

      PowerShell cung cấp cả tùy chọn dòng lệnh và môi trường tập lệnh tích hợp (ISE):
- Để mở PowerShell bạn mở hộp thoại Run ( Windows + R ) sau đó nhập powershell > Enter
- Để mở PowerShell_ISE bạn mở hộp thoại Run ( Windows + R ) sau đó nhập powershell_ise > Enter. Bạn là người mới bắt đầu thì nên sử dụng PowerShell_ISE sẽ hỗ trợ bạn viết lệnh nhiều hơn.
 

Windows PowerShell_ISE


Lưu ý : Bạn nên khởi động PowerShell với quền administrator để tránh việc có thể sẽ xảy ra lỗi trong quá trình chạy các lệnh.

2. Chạy lệnh với PowerShell

      Các tệp tin PowerShell sẽ có đuôi là .ps1, bạn có thể mở notepad hay các phần mềm khác để viết các lệnh, sau đó lưu file với đuôi ps1, ví dụ : test.ps1
- Để chạy file bạn click phải chuột chọn Run With PowerShell :

Chính sách hạn chế thực thi lệnh

      Trước khi thực thi các lệnh, bạn nên kiểm tra quyền bằng câu lệnh sau :
Get-ExecutionPolicy

 
- Như trên máy mình kết quả trả về là Unrestricted, do mình đã thiết lập trước đó.
- Có các quyền sau :
  • + Restricted -  Không cho phép chạy các lệnh. Giá trị này là mặc định.
  • + AllSigned - Nếu bạn là người đặt giá trị AllSigned thì các lệnh sẽ được thực thi.
  • + RemoteSigned - Các đoạn mã được viết bên trong hệ thống sẽ được thực thi, Còn những mã tạo qua remote thì chỉ được phép chạy khi gán thuộc tính đầy đủ.
  • + Unrestricted - Bạn có thể chạy bất cứ đoạn mã nào.
- Bạn có thể thay đổi các quyền bằng lệnh sau :
Set-ExecutionPolicy AllSigned

PowerShell Cmdlets

- Định nghĩa Cmdlet
+ Cmdlet là các hàm chứa các lệnh được viết sẵn, ta chỉ việc gọi ra để nó thực thi, gần giống như các function trong các ngôn ngữ lập trình khác.
+ Cmdlet không phân biệt chữ hoa và chữ thường. Ví dụ bạn có thể viết như sau : Get-Service, get-service, get-Service.
+ Nếu muốn sử dụng một vài lệnh Cmdlets trên một dòng thì phải ngăn cách bằng dấu chấm phẩy (;)

- Định dạng Cmdlet
+ Cmdlet có cấu trúc như sau, được phân cách bằng dấu gạch ngang :
Động từ-Danh từ-Quy tắc
+ Có một số động từ sau : Get, Set, Start, Stop, New, Out
Ví dụ : 
Get-Service

#Hiển thị danh sách các dịch vụ đang chạy
Get-Content 'C:\Users\PC\Desktop\test.txt'

#Hiển thị nội dung trong file test.txt
+ Các Cmdlet có sẵn
      Bạn có thể kiểm tra các Cmdlet có sẵn bằng lệnh sau :
Get-Help -Category Cmdlet

+ Các quy tắc ( hay các tham số Parameters )
      Mỗi Cmdlet có một vài quy tắc hay tham số riêng, PowerShell ISE sẽ tự động nhắc bạn khi viết dấu gách ngang ( - )
Ví dụ :
Get-Process -Name MicrosoftEdge
# Lấy Process có tên MicrosoftEdge

Get-Process -Name M*
# Lấy tất cả Process có tên bắt đầu bằng M
- Ở ví dụ trên
      + Get -  là động từ
      + Process -  là danh từ
      + Name là quy tắc, hay tham số ( parameters )

- Nếu quên các tham số, bạn có thể dùng lệnh sau để hiển thị các tham số cho Cmdlet :
Get-Service | Get-Member


- Một cách khác trong trường hợp bạn quên tham số, hay cách sử dụng các Cmdlet, bạn có thể dùng lệnh Get-Help sau :
Get-Help Get-Service -Examples
Thay thế các Cmdlet bạn cần biết hướng dẫn, ở trên Cmdlet của mình là Get-Service
- Trước khi chạy lện Get-Help ở trên, bạn có thể cập nhật Help bằng cách chạy lệnh :
Update-Help

#Cập nhật dữ liện trợ giúp, chỉ cần chạy một lần khi có kết nối internet


Alias - Cách viết tắt

      Alias là cách viết tắt của một số lệnh Cmdlet, mục đích đương nhiên là rút ngắn cách viết rồi. Ví dụ bạn có thể viết :
Start winrar.exe

# thay thế cho :

Start-Process winrar.exe
- Để xem tất cả các lệnh rút gọn ta sử dụng lệnh : Get-Alias

Ghi chú

- Để chú thích trong PowerShell ta sử dụng từ khoá # ở trước
- Nếu muốn ghi chú nhiều dòng ta sử dụng <# #>

Pipe

      Pipe trong PowerShell có thể hiểu đơn giản là thực hiện nhiều lệnh nối tiếp nhau, ta xét ví dụ sau :
 
Get-Service "s*" | Sort-Object Status -Descending

#Lấy các dịch vụ đang chạy có tên bắt đầu bằng s và sắp sếp giảm dần theo Status
- Ở ví dụ trên có sử dụng kí tự | , kí tự này có ý nghĩa kết thúc câu lệnh bên trái, đồng thời câu lệnh bên phải sẽ thực thi trên kết quả trả về của lệnh bên trái.
Get-Service | Where-Object {$_.status -eq "Running"} | SELECT displayname

#Lấy tất cả các dịch vụ đang có trạng thái là Running và hiển thị theo displayName
- Ví dụ trên sử dụng nhiều câu lệnh được nối tiếp nhau bằng dấu |

3. Kết luận

      Như vậy mình đã giới thiệu một số khái niệm và cách dùng cơ bản nhất của PowerShell. Có thể còn một số kí tự hay toán tử bạn chưa rõ trong một số dòng lệnh, nhưng không quan trọng vì bạn chỉ cần có cái nhìn chung về PowerShell trong bài này là được, chi tiết sẽ có trong các bài sau.Hi vọng có thể giúp ích cho bạn :)