Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell

2952
25-04-2026
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:

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 1.

Để 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.

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 2.

Lịch sử phát triển của tiện ích dòng lệnh Windows

Khởi nguồn từ những năm 1980, dòng lệnh trong Windows ban đầu chỉ đơn thuần là Command Prompt (CMD), một công cụ khá hạn chế về khả năng tự động hóa và mở rộng chức năng. Đến cuối những năm 2000, Microsoft đã nhận ra rằng để đáp ứng nhu cầu quản trị hệ thống hiện đại, cần một công cụ mạnh mẽ hơn, linh hoạt hơn. Chính vì vậy, PowerShell ra đời vào năm 2006 như một nền tảng mới, mang lại khả năng lập trình, tự động hóa và quản lý hệ thống toàn diện hơn cho người dùng Windows.

Trong suốt hơn thập kỷ phát triển, PowerShell đã liên tục được nâng cấp, mở rộng tính năng, trở thành một phần không thể thiếu trong quản trị hệ thống cho các chuyên gia IT. Phiên bản mới nhất của PowerShell còn tích hợp cả nền tảng mã nguồn mở, giúp cộng đồng đóng góp, phát triển nhanh chóng các module, script, phù hợp với xu thế chuyển đổi sang điện toán đám mây và môi trường hybrid.

Lý do nên sử dụng PowerShell

Việc sử dụng PowerShell mang lại rất nhiều lợi ích vượt trội so với các công cụ dòng lệnh truyền thống như Command Prompt. Đầu tiên, PowerShell cung cấp khả năng tự động hóa các tác vụ phức tạp, giúp tiết kiệm thời gian đáng kể trong công việc quản trị hệ thống, cài đặt phần mềm, sao lưu dữ liệu, hay kiểm tra trạng thái hệ thống. Thứ hai, khả năng scripting mạnh mẽ giúp người dùng tạo ra các tập lệnh tùy chỉnh phù hợp với nhu cầu riêng, thay vì phải thao tác thủ công từng bước.

Ngoài ra, PowerShell còn hỗ trợ quản trị từ xa, giúp người quản trị có thể kiểm soát nhiều máy tính cùng lúc mà không cần phải trực tiếp tới từng máy. Đặc biệt hữu ích trong các doanh nghiệp, tổ chức lớn. Đồng thời, khả năng tích hợp dễ dàng với các dịch vụ đám mây như Azure, AWS, hay các API web giúp PowerShell trở thành công cụ đa năng, phù hợp với xu hướng công nghệ hiện nay.

Một số lệnh cơ bản trong PowerShell

PowerShell cung cấp hệ thống lệnh (cmdlet) rất phong phú, nhưng trong thực tế, có một nhóm lệnh cơ bản được sử dụng thường xuyên để quản lý hệ thống, thao tác file và xử lý tiến trình. Việc nắm vững các lệnh này là nền tảng để làm việc hiệu quả với PowerShell, đặc biệt trong môi trường quản trị hệ thống và tự động hóa.

Các lệnh quản lý tệp và thư mục

  • Get-ChildItem (hoặc alias: ls): Liệt kê nội dung thư mục hiện tại hoặc thư mục chỉ định.
  • New-Item: Tạo mới file hoặc thư mục.
  • Remove-Item: Xóa file hoặc thư mục.
  • Copy-Item: Sao chép file hoặc thư mục.
  • Move-Item: Di chuyển file hoặc thư mục.

Các lệnh quản lý hệ thống và thông tin

  • Get-Process: Hiển thị danh sách các tiến trình đang chạy.
  • Stop-Process: Dừng một tiến trình nhất định.
  • Get-Service: Liệt kê các dịch vụ hệ thống.
  • Start-Service / Stop-Service: Khởi động hoặc dừng dịch vụ.
  • Get-EventLog: Xem nhật ký sự kiện của hệ thống.

Lệnh đọc và ghi nội dung file

  • Get-Content: đọc file
  • Set-Content: ghi đè nội dung
  • Add-Content: thêm nội dung vào file

Cách sử dụng PowerShell hiệu quả

Để tận dụng tối đa sức mạnh của PowerShell, người dùng cần nắm vững các kỹ năng thao tác, cũng như biết cách khai thác các tính năng nâng cao của môi trường này. Sau đây là những hướng dẫn giúp bạn sử dụng PowerShell một cách hiệu quả hơn trong công việc hàng ngày.

Khởi động Windows PowerShell

Bạn có thể mở PowerShell bằng nhiều cách khác nhau tùy theo nhu cầu sử dụng. Cách nhanh nhất là tìm kiếm “PowerShell” trong Start Menu và chọn Windows PowerShell hoặc Windows Terminal. Với các tác vụ quản trị hệ thống, bạn nên chạy dưới quyền Run as Administrator để có đầy đủ quyền thực thi. Ngoài ra, PowerShell cũng có thể được mở trực tiếp từ cửa sổ Run (Win + R) bằng cách nhập powershell.

Cách chạy (run) cmdlets

Cmdlet là các lệnh cơ bản trong PowerShell, thường có cấu trúc dạng Verb-Noun như Get-Process, Get-Service. Để chạy một cmdlet, bạn chỉ cần nhập lệnh và nhấn Enter. PowerShell cho phép truyền tham số để tùy chỉnh kết quả, ví dụ Get-Process -Name chrome để lọc tiến trình cụ thể. Việc hiểu đúng cú pháp và tham số giúp bạn kiểm soát lệnh chính xác và hiệu quả hơn.

Tạo pipeline

Pipeline là một trong những tính năng mạnh nhất của PowerShell, cho phép bạn kết nối nhiều cmdlet lại với nhau bằng ký hiệu |. Thay vì xử lý từng bước riêng lẻ, bạn có thể truyền kết quả của lệnh này làm đầu vào cho lệnh khác. Ví dụ:

Get-Process | Where-Object {$_.CPU -gt 100}

Pipeline giúp tự động hóa quy trình, giảm thao tác thủ công và tận dụng tối đa mô hình xử lý theo đối tượng của PowerShell.

Lưu pipeline dưới dạng script PS1

Khi bạn cần sử dụng lại một chuỗi lệnh nhiều lần, hãy lưu chúng thành file script có đuôi .ps1. Bạn chỉ cần viết các lệnh vào file bằng Notepad hoặc VS Code, sau đó lưu lại. Script giúp chuẩn hóa quy trình, dễ dàng chia sẻ và triển khai trong môi trường thực tế, đặc biệt hữu ích với DevOps và quản trị hệ thống.

Cách chạy PowerShell Scripts

Để chạy file .ps1, bạn có thể dùng lệnh:

. en-script.ps1

Tuy nhiên, mặc định PowerShell có chính sách bảo mật (Execution Policy) có thể chặn script. Trong trường hợp đó, bạn cần điều chỉnh bằng lệnh như:

Set-ExecutionPolicy RemoteSigned

Sau khi cấp quyền phù hợp, bạn có thể chạy script trực tiếp. Việc này cho phép tự động hóa các tác vụ phức tạp như deploy, backup, monitoring mà không cần thao tác thủ công từng bước.

Ví dụ về một PowerShell Script

Để rõ hơn về khả năng của PowerShell, chúng ta sẽ xem qua một ví dụ đơn giản về một script tự động kiểm tra trạng thái dịch vụ, gửi email cảnh báo nếu dịch vụ không hoạt động. Script này có thể tùy chỉnh để phù hợp với nhu cầu của từng hệ thống.

Một ví dụ đơn giản là script kiểm tra các tiến trình đang sử dụng CPU cao và xuất kết quả ra file log:

Lấy danh sách tiến trình có CPU > 100

$processes = Get-Process | Where-Object { $_.CPU -gt 100 }

Xuất kết quả ra file

$processes | Select-Object Name, CPU | Out-File "high_cpu_processes.txt"

Thông báo hoàn thành

Write-Output "Đã ghi danh sách tiến trình vào file high_cpu_processes.txt"

Trong script trên, Get-Process dùng để lấy danh sách tiến trình, Where-Object lọc các tiến trình theo điều kiện CPU, và Out-File giúp lưu kết quả ra file. Đây là một ví dụ điển hình cho việc kết hợp nhiều cmdlet thành pipeline để xử lý dữ liệu.

Một ví dụ khác phổ biến hơn trong thực tế là tự động backup file:

$source = "C:\Data"

$destination = "D:\Backup"

Sao chép toàn bộ dữ liệu

Copy-Item -Path $source -Destination $destination -Recurse

Write-Output "Backup hoàn tất!"

Script này giúp sao chép toàn bộ dữ liệu từ thư mục nguồn sang thư mục đích, có thể dùng cho các tác vụ backup định kỳ.

PowerShell giúp bạn tự động hóa những gì trên PC?

Với khả năng scripting và tự động hóa, PowerShell thực sự là trợ thủ đắc lực giúp bạn quản lý PC một cách hiệu quả hơn. Bạn có thể viết script tự động dọn dẹp ổ cứng, cập nhật phần mềm, kiểm tra tình trạng phần cứng, sao lưu dữ liệu hoặc thực thi các tác vụ lặp đi lặp lại hàng ngày chỉ trong vài phút.

Viết script PowerShell đơn giản

Bạn có thể bắt đầu tự động hóa với những script rất cơ bản, chẳng hạn như hiển thị thông tin hệ thống hoặc kiểm tra trạng thái máy. Ví dụ:

# Hiển thị thông tin máy tính

Get-ComputerInfo

# Hiển thị ngày giờ hiện tại

Get-Date

Các script đơn giản như vậy giúp bạn làm quen với cú pháp và cách PowerShell xử lý lệnh. Từ đó, bạn có thể mở rộng thành các tác vụ phức tạp hơn.

Viết script tự động sắp xếp file hằng ngày

Một ứng dụng phổ biến của PowerShell là tự động quản lý file. Ví dụ, bạn có thể viết script để phân loại file theo định dạng:

$source = "C:\Downloads"

Get-ChildItem $source -File | ForEach-Object {

    $extension = $_.Extension.Replace(".", "")

    $folder = Join-Path $source $extension

    if (!(Test-Path $folder)) {

        New-Item -ItemType Directory -Path $folder

    }

    Move-Item $_.FullName -Destination $folder

}

Script này sẽ tự động tạo các thư mục theo định dạng file (pdf, jpg, docx,…) và di chuyển file vào đúng vị trí. Khi chạy định kỳ, nó giúp thư mục luôn gọn gàng mà không cần thao tác thủ công.

Lên lịch và thực thi tác vụ

owerShell có thể kết hợp với Task Scheduler của Windows để tự động chạy script theo lịch. Ví dụ, bạn có thể:

  • Chạy script backup dữ liệu mỗi ngày
  • Dọn dẹp file tạm mỗi tuần
  • Kiểm tra trạng thái hệ thống theo giờ

Quy trình cơ bản gồm: tạo script .ps1, sau đó cấu hình trong Task Scheduler để chạy theo thời gian mong muốn. Khi đó, toàn bộ tác vụ sẽ được thực thi tự động mà không cần can thiệp thủ công.

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".

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 3.

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

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 4.

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:

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 5.

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.

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 6.

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.

Windows powershell là gì? Hướng dẫn tạo script Windows PowerShell cho người mới bắt đầu - Ảnh 7.

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

Như vậy, Windows powershell là một công cụ mạnh mẽ, linh hoạt và cực kỳ hữu ích trong việc quản lý, tự động hóa các tác vụ trên hệ điều hành Windows. Với khả năng hoạt động dựa trên các cmdlet, pipeline, script và tích hợp rộng rãi, PowerShell đã trở thành một phần không thể thiếu đối với các quản trị viên hệ thống, lập trình viên và người dùng đam mê công nghệ.

Qua bài viết này, hy vọng bạn đã có cái nhìn toàn diện về cách sử dụng PowerShell, từ các lệnh cơ bản đến các kỹ thuật nâng cao như viết script tự động. Việc làm chủ PowerShell không chỉ giúp tiết kiệm thời gian, tăng năng suất mà còn mở ra nhiều cơ hội khám phá các khả năng tiềm ẩn của hệ thống Windows. 

>> 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

SHARE