Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell
Trong khi Command Prompt được khá nhiều người biết đến, thì Windows PowerShell lại là một khái niệm khá mới lạ đối với một số người dùng. Nói một cách đơn giản, PowerShell là công cụ có thể được sử dụng với ý định thay thế Command Prompt, có khả năng cung cấp quyền kiểm soát, quản lý hệ điều hành Windows. Vậy Powershell là gì? Người mới bắt đầu sử dụng có thể tạo script Windows PowerShell như thế nào? Những thắc mắc trên sẽ được bật mí trong bài viết dưới đây từ Bizfly Cloud, cùng theo dõi nhé!
Windows powershell là gì?
Windows PowerShell là một công cụ tự động hóa hướng đối tượng (object-oriented) và ngôn ngữ script với một trình command-line shell tương tác được thiết kế để giúp các chuyên viên IT cấu hình hệ thống và tự động hóa các tác vụ quản trị. Windows PowerShell có trong tất cả các hệ điều hành Windows hiện đại từ phiên bản Windows 2008R2 trở đi.
Không giống phần lớn các shell, chỉ chấp nhận và trả về văn bản, Windows PowerShell được xây dựng trên nền tảng của môi trường ngôn ngữ chung .NET Framework (CLR) và .NET Framework, chấp nhận và trả về các đối tượng .NET Framework. Sự thay đổi cơ bản này đem đến các công cụ và phương pháp hoàn toàn mới trong quản lý và cấu hình Windows.
Cùng Bizfly Cloud tìm hiểu về Windows PowerShell cũng giống như học cách sử dụng một công cụ đa chức năng phổ thông vậy. Một số script PowerShell cơ bản sau đây sẽ giúp bạn dễ dàng thực hiện gần như bất kỳ tác vụ quản trị nào liên quan đến môi trường Windows IT.
PowerShell cung cấp cả tùy chọn dòng lệnh và môi trường kịch bản tích hợp (ISE):
Để khởi chạy dòng lệnh PowerShell, gõ powershell.exe trong menu Start của Windows. Bạn sẽ thấy một màn hình như sau:
Để khởi chạy PowerShell ISE, gõ powershell_ise.exe trong menu Start. Sử dụng PowerShell ISE thường được ưa chuộng hơn khi làm việc với ngôn ngữ script, nhờ tự động điền các lệnh, hỗ trợ các tính năng tự động hóa khác giúp đơn giản hóa việc phát triển và thử nghiệm script.
Chuẩn bị chạy PowerShell script
PowerShell scripts được lưu trữ trong file .ps1. Bạn sẽ không thể chạy 1 script khi kích đúp chuột vào 1 file, nhờ vậy mà tránh được các tổn hại ngoài ý muốn đối với hệ thống. Thay vào đó, để thực thi 1 script bạn kích chuột phải vào script đó và chọn "Run with PowerShell".
Ngoài ra, còn có chính sách hạn chế thực thi dòng lệnh. Bạn có thể kiểm tra policy này bằng cách sử dụng dòng lệnh trong PowerShell: Get-ExecutionPolicy
Bạn sẽ nhận được 1 trong các giá trị sau:
Restrict: Không cho phép tập lệnh nào. Đây là thiết lập mặc định, vì vậy bạn sẽ thấy nó lần đầu tiên khi chạy lệnh.
Allsigned: Bạn có thể chạy các script được sign bởi 1 developer uy tín. Với cài đặt như vậy trước khi thực hiện lệnh, script sẽ cần bạn xác nhận nếu muốn chạy lệnh.
RemoteSigned: Bạn có thể chạy script của riêng mình hoặc hoặc script được sign của một developer uy tín.
Unrestricted: Bạn có thể chạy bất cứ script nào bạn muốn
Để bắt đầu làm việc với PowerShell, bạn cần thay đổi cài đặt chính sách từ Restricted thành RemoteSigned bằng lệnh Set-ExecutionPolicy RemoteSigned:
PowerShell Cmdlets
Về Cmdlets – câu lệnh ngắn
- Lệnh cmdlet là lệnh PowerShell với hàm được xác định trước, tương tự như operator trong ngôn ngữ lập trình. Dưới đây là một số lưu ý quan trọng cần biết về lệnh cmdlet:
- Có các hệ thống cmdlets, người dùng cmdlets, và cmdlets tùy chỉnh.
- Các kết quả output của Cmdlets là một đối tượng hoặc như một dãy đối tượng.
- Cmdlets có thể lấy dữ liệu để phân tích hoặc chuyển dữ liệu sang một cmdlet khác sử dụng các pipe.
- Cmdlets không phân biệt chữ hoa với chữ thường. Ví dụ: bạn gõ "Get-ADUser", "get-aduser" hay "gEt-AdUsEr" đều không ảnh hưởng gì.
- Nếu bạn muốn sử dụng 1 vài cmdlets trong 1 chuỗi bạn sẽ phải phân tách chúng bằng dấu chấm phẩy (;).
Cấu trúc Cmdlet
Cấu trúc một cmdlet luôn luôn bao gồm một động từ (hoặc một từ có chức năng như một động từ) và một danh từ, được phân tách bằng dấu gạch nối (quy tắc "động từ-danh từ"). Ví dụ, các lệnh có bao gồm động từ như sau:
Get - Lệnh gọi
Set - Lệnh xác định
Start – Lệnh khởi động
Stop - Lệnh ngừng chạy
Out – Lệnh xuất
New – Lệnh tạo mới
Bạn có thể thực hành với một vài cmdlets sau:
Get-Process - Hiển thị các process hiện đang chạy trên máy của bạn.
Get-Service - Hiển thị list các service kèm theo trạng thái.
Get- Content – Hiển thị nội dung file được chỉ định (ví dụ Get-ContentC:\Windows\System32\drivers\etc\hosts)
Các Cmdlets khả dụng
Bạn sẽ không phải ghi nhớ các lệnh cmdlets bởi có thể list ra toàn bộ các cmdlets sử dụng câu lệnh Get-Help –Category.
Ngoài ra, bạn cũng có thể tự tạo các cmdlets riêng.
Parameters – thông số
Mỗi cmdlet lại có 1 vài thông số để tùy chỉnh. PowerShell ISE sẽ tự động đề xuất tất cả các tham số hợp lệ và các kiểu tham số sau khi bạn gõ một lệnh cmdlet và dấu nối (-):
Ví dụ lệnh cmdlet sau đây sẽ hiển thị toàn bộ các dịch vụ có tên bắt đầu bằng W:
Get-Service -Name W*
Nếu bạn quên thông số của cmdlet, chỉ cần sử dụng script như sau sẽ giúp hiển thị các tham số của lệnh cmdlet Get-Process:
Get-Process | Get-Member
Nếu bạn vẫn chưa tìm được cmdlet mình cần thì có thể sử dụng lệnh Help như trong ví dụ với lệnh Get-Process như sau:
Update-Help #to update the help data
Get-Help Get-Process -Examples
Aliases
Bạn cũng có thể sử dụng aliases, đó là tên rút gọn của cmdlet. Ví dụ, thay vì "Get-Help" bạn có thể chỉ cần dùng "Help". Bạn có thể chạy thử 2 lệnh sau và so sánh nếu chúng cho ra cùng 1 kết quả:
Start-Process notepad
start notepad
Tương tự, để dừng quá trình, bạn cũng có thể sử dụng 1 trong 2 câu lệnh sau:
Stop-Process -Name notepad
spps -Name notepad
Để hiện tất cả aliases, dùng câu lệnh Get-Alias.
Comments
Để lại nhận xét trong một script sẽ giúp bạn hiểu rõ hơn về các hành động của script. Một string comment là một dòng đơn bắt đầu bằng ký hiệu (#), block comment bắt đầu và kết thúc bằng các ký hiệu số với các dấu ngoặc nhọn chạy liên tiếp trên nhiều dòng.
Pipes
Pipes sẽ truyền dữ liệu từ một cmdlet sang cmdlet khác. Có thể dùng pipe để gọi ra toàn bộ thuộc tính của 1 đối tượng.
Ví dụ: Nếu bạn dùng script sau, bạn sẽ có tất cả các dịch vụ được phân loại theo trạng thái.
Get-Service | Sort-Object -property Status
Bạn cũng có thể dùng pipr để xuất text vào 1 file sử dụng script như sau:
"Hello, World!" | Out-File C:\ps est.txt
Có thể dùng nhiều pipe. Ví dụ, script dưới đây liết kê toàn bộ service, với pipe đầu tiên không bao gồm các dịch vụ đã dừng và pipe thứ 2 giới hạn danh sách để chỉ hiển thị tên:
Get-Service | WHERE {$_.status -eq "Running"} | SELECT displayname
# "$_." defines current element in the pipe
Tổng kết
Sau phần hướng dẫn trên, bạn đã biết cách chạy PowerShell như thế nào, làm thế nào để thay đổi chính sách thực thi lệnh, lệnh cmdlet là gì, cách truyền dữ liệu sử dụng pipe và cách lấy các thuộc tính của đối tượng. Và nhớ rằng nếu quên điều gì, bạn luôn có thể sử dụng lệnh Get-Help để được trợ giúp.
Tham khảo: https://blog.netwrix.com/2018/02/21/windows-powershell-scripting-tutorial-for-beginners/
>> Có thể bạn quan tâm: Các câu lệnh Powershell đơn giản cho mọi hệ điều hành Windows