NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
24/09/2024
Lượt xem

Windows Powershell là gì? Tổng quan thông tin về Windows Powershell

24/09/2024
30 phút đọc
Lượt xem

Đánh giá

Kể từ khi được ra mắt, PowerShell đã khẳng định vị thế quan trọng của mình đối với các quản trị viên hệ thống. Cùng Vietnix khám phá Windows Powershell là gì, những điểm nổi bật và thông tin quan trọng của công cụ này đối với môi trường công nghệ hiện đại trong bài viết sau.

Windows PowerShell là gì?

Windows PowerShell là một công cụ tự động hóa mạnh mẽ, tích hợp giao diện dòng lệnh và ngôn ngữ kịch bản, được phát triển bởi Microsoft nhằm hỗ trợ các quản trị viên trong việc cấu hình hệ thống và tự động hóa các tác vụ quản lý. Được giới thiệu lần đầu vào năm 2006 với tên gọi Microsoft Shell hay Monad, PowerShell đã trải qua nhiều cải tiến và hiện nay trở thành một phần quan trọng trong bộ công cụ của các developers.

Windows PowerShell là một công cụ tự động hóa mạnh mẽ
Windows PowerShell là một công cụ tự động hóa mạnh mẽ

Windows PowerShell cho phép người dùng truy cập và quản lý các đối tượng trên máy tính thông qua một ngôn ngữ lập trình duy nhất, với khả năng tương tác mạnh mẽ với .NET Framework. Bên cạnh đó, công cụ này còn là một ngôn ngữ scripting đầy đủ chức năng, hỗ trợ tự động hóa hàng loạt các quy trình phức tạp, từ việc quản lý tài nguyên trong Active Directory đến việc cấu hình các dịch vụ như Exchange Server. Với việc trở thành một ứng dụng mã nguồn mở, PowerShell hiện có thể được sử dụng trên các nền tảng như LinuxUnix, mở rộng khả năng tiếp cận cho nhiều người dùng hơn. 

Tổng quan lịch sử của tiện ích dòng lệnh Windows

CMD.EXE đã trở thành công cụ dòng lệnh chủ yếu cho hệ điều hành Windows kể từ khi Windows NT ra mắt. Mặc dù CMD.EXE kế thừa một số yếu tố từ người tiền nhiệm DOS (COMMAND.COM), nhưng nó vẫn dựa trên một ngôn ngữ kịch bản đơn giản, sử dụng các file lệnh Windows (.CMD và .BAT). Sự xuất hiện của Windows Scripting Host cùng với các ngôn ngữ như VBScript và JScript đã nâng cao đáng kể khả năng kịch bản của tiện ích này, tạo ra sự kết hợp hài hòa giữa dòng lệnh nâng cao và môi trường lập trình kịch bản.

CMD.EXE đã trở thành công cụ dòng lệnh chủ yếu cho hệ điều hành Windows
CMD.EXE đã trở thành công cụ dòng lệnh chủ yếu cho hệ điều hành Windows

Tuy nhiên, quá trình thao tác với bao nhiêu file CMD.EXE và Windows Scripting Host không phải là vấn đề chính mà người dùng quan tâm. Thay vào đó, họ thường gặp khó khăn trong lúc hoàn thành những nhiệm vụ tưởng chừng đơn giản. Việc sử dụng framework và kịch bản yêu cầu sự kết hợp giữa Windows Scripting Host, các lệnh batch và các thực thi độc lập, dẫn đến sự phức tạp trong khi thực thi và phân tích cú pháp.

Một trong những điểm yếu lớn nhất của CMD.EXE là việc xử lý dữ liệu dưới dạng văn bản thuần túy. Tất cả dữ liệu đầu ra từ các lệnh hay kịch bản đều là văn bản và cần phải được phân tích cú pháp để trở thành dữ liệu đầu vào cho các lệnh tiếp theo. Đây chính là điểm khởi đầu mà PowerShell đã cải tiến, nhằm khắc phục những hạn chế của các tiện ích dòng lệnh truyền thống, mang lại một trải nghiệm sử dụng mạnh mẽ và linh hoạt hơn cho người dùng.

Vai trò của PowerShell đối với quản lý hệ thống và tự động hóa

Windows PowerShell đã trở thành một công cụ không thể thiếu trong lĩnh vực quản lý hệ thống và tự động hóa. Dưới đây là những vai trò quan trọng mà tiện ích này có thể đem lại:

  • Công cụ quản lý hệ thống mạnh mẽ: PowerShell giúp quản lý cơ sở hạ tầng IT hiệu quả, từ cài đặt phần mềm đến quản lý tài khoản người dùng.
  • Giải pháp tự động hóa: Tiện ích này tự động hóa các quy trình, giảm thiểu lỗi do con người và nâng cao hiệu suất làm việc.
  • Hỗ trợ quản trị viên: PowerShell hỗ trợ triển khai các chính sách bảo mật, quản lý cấu hình hệ thống và tối ưu hóa quy trình làm việc.
  • Đa nền tảng: Với khả năng tương thích mở rộng cho MacOS và Linux, PowerShell khẳng định vị thế như một công cụ đa nền tảng.
  • Tùy chỉnh cao: PowerShell cho phép người dùng tùy chỉnh và mở rộng chức năng, đáp ứng nhu cầu quản lý hệ thống đa dạng.
  • Cộng đồng người dùng đông đảo: Sự hỗ trợ từ cộng đồng giúp các developers dễ dàng tìm kiếm giải pháp sáng tạo và đột phá trong lĩnh vực công nghệ thông tin.
Vai trò của PowerShell
Vai trò của PowerShell

Ưu và nhược điểm của PowerShell

Một số ưu nhược điểm của Windows PowerShell như sau:

Ưu điểm
  • default icon

    Tích hợp tốt với hệ sinh thái Microsoft, lý tưởng cho quản lý sản phẩm và dịch vụ.

  • default icon

    Cmdlet giúp thực hiện tác vụ phức tạp dễ dàng

  • default icon

    Tự động hóa và quản lý hệ thống mạnh mẽ trong Windows.

Nhược điểm
  • default icon

    Chạy tốt nhất trên Windows, kém hiệu quả trên Linux/macOS.

  • default icon

    Khó khăn cho người mới làm quen với Microsoft.

  • default icon

    Ít linh hoạt và khả năng ứng dụng hạn chế hơn Python trong phát triển web và khoa học dữ liệu.

Cách cài đặt và cấu hình Windows Powershell

Cách cài đặt và cấu hình Windows Powershell cũng không quá phức tạp, các bước thực hiện như sau:

Cách cài đặt

Cài đặt trên Windows: PowerShell thường đã được cài đặt sẵn trên các phiên bản Windows mới. Người dùng có thể cập nhật hoặc cài đặt phiên bản mới nhất bằng cách truy cập Microsoft Store hoặc tải xuống tại trang web chính thức của Microsoft.

Cài đặt Powershell trên Windows
Cài đặt Powershell trên Windows

Cài đặt trên Linux và macOS: PowerShell có thể được cài đặt trên macOS và Linux thông qua các trình quản lý gói như Homebrew cho macOS và APT cho Ubuntu. Dưới đây là hướng dẫn cài đặt cơ bản cho từng hệ điều hành.

  • Cài đặt trên macOS:
    • Mở Terminal.
    • Chạy lệnh: brew install --cask powershell.
  • Cài đặt trên Ubuntu (Linux):
    • Mở Terminal.
    • Chạy lệnh: sudo apt-get install powershell.
  • Khởi chạy PowerShell: Sau khi cài đặt, người dùng có thể khởi chạy PowerShell từ Terminal bằng lệnh pwsh.

Cách cấu hình

Windows PowerShell cách mở và quá trình cấu hình cũng không quá phức tạp, bao gồm các bước thực hiện chính như sau:

  1. Cấu hình thiết lập cơ bản: Nhấp chuột phải vào tiêu đề cửa sổ và chọn Properties để điều chỉnh kích thước, màu nền, và font chữ.
  2. Tạo và sử dụng profile: Tạo profile (script tự động chạy khi khởi động) bằng lệnh: notepad $PROFILE. Thêm các lệnh cấu hình, alias, hoặc module cần thiết.
  3. Cài đặt Scripts và Modules: Cài đặt module bổ sung từ PowerShell Gallery với lệnh: Install-Module. Cẩn thận khi cài đặt scripts từ nguồn không tin cậy.
  4. Tối ưu hóa tự động hóa: Tạo script tự động hóa cho các nhiệm vụ thường xuyên để tiết kiệm thời gian và nâng cao hiệu quả.
Cách cấu hình Windows Powershell
Cách cấu hình Windows Powershell

Công cụ, lệnh và module của Windows PowerShell

Việc hiểu rõ về các công cụ, lệnh và mô-đun của Windows Powershell là gì sẽ giúp người dùng tối ưu hóa quy trình làm việc và nâng cao năng suất trong quản lý hệ thống, cụ thể như sau:

Công cụ PowerShell

PowerShell được cài đặt mặc định trên Windows 7, Windows Server 2008 R2, Windows 10 và các phiên bản Windows mới hơn. Các bản PowerShell mới mang đến nhiều tính năng và Cmdlets (các lệnh PowerShell) bổ sung, được cài đặt qua Windows Management Framework (WMF), với WMF 5.1 là phiên bản khuyến nghị. Một số tính năng mới phụ thuộc vào hệ điều hành thay vì phiên bản WMF; chẳng hạn như, Cmdlet Test-NetConnection có sẵn trên Windows 8 và Windows Server 2012 nhưng không hỗ trợ trên Windows 7, ngay cả khi sử dụng WMF mới nhất.

Trên các hệ thống Windows, người dùng có hai môi trường PowerShell, đó là bảng điều khiển và PowerShell ISE (môi trường tập lệnh tích hợp). Bảng điều khiển hoạt động giống dòng lệnh truyền thống nhưng tích hợp đầy đủ các tính năng của PowerShell, bao gồm biến, vòng lặp và tự động hoàn thành piping và lệnh có sẵn. Đối với việc xây dựng tập lệnh, PowerShell ISE cung cấp tính năng tự động hoàn thành, highlight code và Intellisense, cho phép developers làm việc với nhiều tập lệnh đồng thời thông qua điều hướng theo tab.

PowerShell ISE
PowerShell ISE

cmdlets trong PowerShell

Cmdlet là nền tảng của các lệnh trong PowerShell, được thiết kế với một số chiến lược nhằm tối ưu hóa khả năng sử dụng. Điểm nổi bật của nền tảng này là cách đặt tên Cmdlet theo định dạng Verb-Noun (động từ – danh từ), như Get-Service, Stop-Service hay Import-Csv. Phần động từ chỉ ra hành động cụ thể, với các Cmdlet lấy thông tin thường bắt đầu bằng “Get” (ví dụ: Get-Process, Get-Content), trong khi các lệnh chỉnh sửa thường sử dụng Set, Add hoặc New.

Ngoài ra, các tham số trong PowerShell cũng được chuẩn hóa, giúp người dùng dễ dàng nhận biết và sử dụng. Ví dụ, tham số -ComputerName cho phép thực hiện Cmdlet trên một hoặc nhiều máy tính từ xa, trong khi -Credential được dùng để cung cấp thông tin xác thực, cho phép chạy lệnh với quyền của người dùng cụ thể. Những thiết kế này không chỉ nâng cao tính trực quan mà còn hỗ trợ việc tạo lập tập lệnh một cách hiệu quả và dễ dàng hơn.

Cmdlet là nền tảng của các lệnh trong PowerShell
Cmdlet là nền tảng của các lệnh trong PowerShell

Module trong PowerShell

Trong PowerShell, bạn có thể sử dụng alias cho cả Cmdlet và tham số, giúp tiết kiệm thời gian gõ và rút ngắn độ dài câu lệnh, đặc biệt hữu ích khi kết hợp nhiều lệnh. Mặc dù các alias không phải lúc nào cũng tuân theo quy ước đặt tên tiêu chuẩn nhưng vẫn phản ánh được các tiện ích từ dòng lệnh truyền thống.

Ví dụ, những alias như DIR, CD, DEL CLS tương ứng với Cmdlet Get-ChildItem, Set-Location, Remove-Item và Clear-Host. Đối với alias tham số có thể được xác định trước bởi Cmdlet hoặc được tạo ra bằng cách nhập đủ các ký tự để khớp duy nhất với các tham số hỗ trợ của Cmdlet. 

Module trong PowerShell
Module trong PowerShell

Quản lý file và folder

Quản trị viên hệ thống thường xuyên phải thao tác với file và folder, như di chuyển, lưu trữ file nhật ký, hoặc tìm kiếm file lớn. Khi các thao tác lặp lại trên nhiều file, việc tự động hóa bằng PowerShell trở thành giải pháp tiết kiệm thời gian hiệu quả.

  • Lệnh dir tương đương với Cmdlet Get-ChildItem: Tạo danh sách file trong folder và thao tác qua pipeline hoặc gán đầu ra cho biến nhanh chóng.
  • Sử dụng Get-ChildItem với tham số -Path: Cho phép chỉ định đường dẫn cụ thể để liệt kê file và folder.
  • Tham số -Filter: Tìm kiếm file theo các tiêu chí nhất định để tinh chỉnh kết quả.
  • Tham số -Recurse: Tìm kiếm đệ quy trong các folder con để liệt kê tất cả các file và folder.
  • Switch –File và –Directory (PowerShell 4.0 trở lên): Giới hạn kết quả để dễ dàng phân loại file và folder mà không cần sử dụng Where-Object.

Ví dụ sử dụng Get-ChildItem:

  • Lấy các folder trong C:\Users: Get-ChildItem C:\Users -Directory

  • Tham số -Force: Phát hiện file ẩn hoặc file hệ thống khi cần thiết.
  • Lọc file ẩn, chỉ đọc, hoặc hệ thống (PowerShell 4.0 trở lên): Sử dụng các tham số -Hidden, -ReadOnly-System để lọc file dễ dàng.
  • Sử dụng Where-Object để lọc file trước phiên bản PowerShell 4.0, lọc theo thuộc tính chế độ: Get-ChildItem C:\Users | Where-Object {$_.Mode -like '*R*'}

Get-childltem
Get-childltem

Sao lưu CSDL – SQL Database

PowerShell cũng là một công cụ hữu ích cho việc sao lưu cơ sở dữ liệu SQL, cho phép thực hiện các thao tác như sao lưu toàn bộ cơ sở dữ liệu, sao lưu file và sao lưu transaction log. Một trong những phương pháp đơn giản và hiệu quả để thực hiện sao lưu là sử dụng cmdlet Backup-SqlDatabase.

  • Sao lưu toàn bộ cơ sở dữ liệu:
PS C:> Backup-SqlDatabase -ServerInstance "Computer\Instance" -Database "Databasecentral"

Lệnh này sẽ tạo ra một bản sao lưu cho cơ sở dữ liệu có tên là ‘Databasecentral’.

  • Sao lưu transaction log: 
PS C:> Backup-SqlDatabase -ServerInstance "Computer\Instance" -Database "Databasecentral" -BackupAction Log.

Lệnh này sẽ tạo ra một bản sao lưu cho transaction log của cơ sở dữ liệu đã chỉ định.

Các tham số Windows PowerShell

Trong PowerShell, các Cmdlet có thể nhận các tham số để điều chỉnh hành vi của chúng. Khi thực thi Cmdlet hoặc hàm, bạn có thể cung cấp giá trị tham số để xác định đối tượng, thời điểm, địa điểm và cách thức thực hiện lệnh.

Ví dụ với Get-Process, lệnh này sẽ liệt kê tất cả các tiến trình đang chạy trên hệ thống. Tuy nhiên, nếu bạn chỉ muốn xem một tiến trình cụ thể, như Slack, bạn có thể sử dụng tham số –Name: Get-Process -Name Slack. Kết quả sẽ chỉ hiển thị các tiến trình có tên “Slack”.
Lưu ý rằng, một số tham số là “vị trí”, cho phép bạn gọi lệnh mà không cần chỉ định tên tham số. Trong trường hợp này, cả hai lệnh Get-Process -Name Slack và Get-Process Slack đều cho kết quả tương tự nhau.

Get-Process liệt kê tất cả các tiến trình đang chạy trên hệ thống
Get-Process liệt kê tất cả các tiến trình đang chạy trên hệ thống

Mỗi Cmdlet chấp nhận các loại tham số khác nhau. Ví dụ, để xem các tham số khả dụng, bạn có thể sử dụng lệnh Get-Help Get-Process. Danh sách hiện ra sẽ bao gồm các tham số như Name, Id, ComputerNameModule. Các ký hiệu trong phần cú pháp có ý nghĩa như sau:

  • Trống: Tham số không chấp nhận đầu vào.
  • -: Dấu gạch nối chỉ tên tham số.
  • <>: Trình giữ chỗ cho văn bản.
  • []: Tham số có thể chấp nhận một hoặc nhiều giá trị.
  • {}: Tham số chấp nhận một tập hợp các giá trị.
Những tham số của cú pháp lệnh Cmdlet
Những tham số của cú pháp lệnh Cmdlet

Các tham số cũng xác định loại dữ liệu yêu cầu, chẳng hạn như chuỗi hoặc số nguyên. Ví dụ, với lệnh Get-Process [[-Name] <string[]>], tham số Name chấp nhận một hoặc nhiều giá trị chuỗi. Trong khi ở lệnh Get-Process -Id <int[]>, tham số Id yêu cầu một hoặc nhiều giá trị nguyên.

Nếu bạn muốn thu hẹp kết quả hơn nữa, có thể sử dụng tham số -Id với lệnh Get-Process -Id 3016. Lệnh này sẽ chỉ hiển thị tiến trình có ID 3016, giúp bạn quản lý hiệu quả hơn trong môi trường PowerShell.

Tham số Id trên Cmdlet
Tham số Id trên Cmdlet

Tạo pipeline

Trong PowerShell, mọi dữ liệu được xử lý dưới dạng đối tượng, cho phép xây dựng các script hiệu quả thông qua việc kết nối các Cmdlet bằng ký hiệu pipe (|). Việc lựa chọn đúng Cmdlet và sắp xếp chúng theo trình tự hợp lý là yếu tố quan trọng để tối ưu hóa script.

Giả sử bạn muốn tạo một script để sắp xếp và hiển thị 5 file lớn nhất trong một folder. Dưới đây là cách thực hiện đơn giản nhưng dễ hiểu:

Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `
| Select-Object -First 5 | Format-Table Name, Length -AutoSize.

Trong pipeline này, Get-ChildItem sẽ lấy danh sách các file trong folder chỉ định, sau đó Sort-Object sắp xếp chúng theo kích thước giảm dần. Cuối cùng, Select-Object chọn 5 file lớn nhất và Format-Table định dạng kết quả hiển thị với tên và kích thước của file.

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

Để lưu pipeline đã tạo dưới dạng file script PS1, bạn có thể thực hiện các bước đơn giản sau:

  • Mở Notepad: Khởi động ứng dụng Notepad trên máy tính của bạn.
  • Dán Script: Sao chép và dán đoạn mã PowerShell của bạn vào Notepad. Ví dụ:
Get-ChildItem -Path "C:\Directory" -File | Sort-Object Length -Descending `| Select-Object -First 5 | Format-Table Name, Length -AutoSize
Tiến hành tạo script bằng cách sử dụng NotePad
Tiến hành tạo script bằng cách sử dụng NotePad
  • Lưu File: Chọn File > Save As, sau đó đặt tên file với phần mở rộng .ps1, ví dụ: GetLargestFiles.ps1. Nhấn chọn All Files trong mục Save as type.
  • Chạy Script: Để sử dụng script trong PowerShell, mở PowerShell và chạy lệnh sau: ./GetLargestFiles.ps1.
Chạy script để sử dụng trong PowerShell
Chạy script để sử dụng trong PowerShell

Lưu ý: Nếu bạn gặp phải lỗi liên quan đến quyền khi chạy script, hãy khởi động PowerShell với quyền quản trị viên để đảm bảo script có thể thực thi mà không gặp trở ngại.

Vậy là bạn đã thành công trong việc tạo và lưu script PowerShell dưới định dạng PS1. Giờ đây, bạn có thể dễ dàng sử dụng lại script này mà không cần nhập lại mỗi lần.

Danh sách tên câu lệnh PowerShell Commands

Dưới đây là danh sách 25 câu lệnh PowerShell cơ bản, bao gồm tên câu lệnh, bí danh và mô tả ngắn gọn về chức năng của các lệnh này:

STTTên câu lệnhBí danhMô tả
1Set-Locationcd, chdir, slThiết lập vị trí làm việc hiện tại đến một vị trí chỉ định.
2Get-Contentcat, gc, typeLấy nội dung của một mục tại vị trí chỉ định.
3Add-ContentacThêm nội dung vào các mục chỉ định, như thêm từ vào một file.
4Set-ContentscGhi hoặc thay thế nội dung trong một mục bằng nội dung mới
5Copy-Itemcopy, cp, cpiSao chép một mục từ vị trí này sang vị trí khác.
6Remove-Itemdel, erase, rd, ri, rm, rmdirXóa các mục chỉ định.
7Move-Itemmi, move, mvDi chuyển một mục từ vị trí này sang vị trí khác.
8Set-ItemsiThay đổi giá trị của một mục thành giá trị được chỉ định trong lệnh.
9New-ItemniTạo một mục mới.
10Start-JobsajbBắt đầu một công việc nền trong PowerShell.
11Compare-Objectcompare, difSo sánh hai tập hợp đối tượng.
12Group-ObjectgroupNhóm các đối tượng có cùng giá trị cho các thuộc tính chỉ định.
13Invoke-WebRequestcurl, iwr, wgetLấy nội dung từ một trang web trên Internet.
14Measure-ObjectmeasureTính toán các thuộc tính số của đối tượng và số ký tự, từ, dòng trong các đối tượng chuỗi.
15Resolve-PathrvpaGiải quyết các ký tự đại diện trong một đường dẫn và hiển thị nội dung đường dẫn.
16Resume-JobrujbKhôi phục một công việc đã bị tạm dừng.
17Set-Variableset, svThiết lập giá trị của một biến; tạo biến nếu biến với tên yêu cầu chưa tồn tại.
18Show-CommandshcmTạo các lệnh PowerShell trong một cửa sổ lệnh đồ họa.
19Sort-ObjectsortSắp xếp các đối tượng theo giá trị thuộc tính.
20Start-ServicesasvBắt đầu một hoặc nhiều dịch vụ đã dừng.
21Start-Processsaps, startKhởi động một hoặc nhiều tiến trình trên máy tính cục bộ.
22Suspend-JobsujbTạm dừng các công việc quy trình.
23Wait-JobwjbChặn lệnh cho đến khi một hoặc tất cả các công việc nền PowerShell trong phiên làm việc hoàn thành.
24Where-Object?, whereChọn các đối tượng từ một tập hợp dựa trên giá trị thuộc tính của chúng.
25Write-Outputecho, writeGửi các đối tượng chỉ định đến lệnh tiếp theo trong pipeline.
Bảng phân tích các câu lệnh PowerShell Commands

Ví dụ về một PowerShell Script

Lệnh DIR là một trong những lệnh phổ biến nhất trong CMD.EXE, giúp người dùng liệt kê tất cả các file và folder con trong một folder mẹ, cùng với thông tin như ngày giờ cập nhật và kích thước file. Trong PowerShell, lệnh tương đương là Get-ChildItemDIR thực chất là một bí danh cho lệnh này.

Khi chạy DIR trong PowerShell, người dùng sẽ nhận được danh sách các file và folder, nhưng không có thông tin tổng hợp như tổng kích thước của tất cả các file hay tổng số file và folder con. Để mô phỏng lệnh DIR từ CMD.EXE, bạn có thể tạo một script PowerShell đơn giản. Script này sẽ thu thập và hiển thị thông tin tương tự như lệnh DIR, giúp người dùng dễ dàng quản lý và theo dõi các file trong folder.

DIR.PS1: Tiêu đề (Header)

Một script PowerShell là file văn bản với đuôi mở rộng .PS1. Để chạy script, gõ lệnh: .DIR.PS1 X:Folder.

  • Trong đó X là ký tự phân vùng (C, D, E) và Folder là tên folder.

Để lấy thông tin về phân vùng ổ, sử dụng Windows Management Instrumentation (WMI). Bạn tạo biến $filter cho lệnh Get-WmiObject để chỉ lấy thông tin về ổ đĩa cụ thể. Kết quả được lưu vào biến $volInfo, là đối tượng chứa thông tin từ lệnh này.

$filter = "DeviceID = '" + $drive + ":'"
$volInfo = Get-WmiObject -Class Win32_LogicalDisk -Filter $filter

Sử dụng Get-WmiObject để truy xuất thông tin về ổ đĩa dựa trên DeviceID.

$serial = $volInfo.VolumeSerialNumber.SubString(0, 4) + "-" + `

$volInfo.VolumeSerialNumber.SubString(4, 4)

Định dạng số serial bằng cách tách dãy số 8 ký tự thành hai phần 4 ký tự, ngăn cách bằng dấu nối. Việc phân tách dòng như vậy giúp mã dễ hiểu hơn, đảm bảo định dạng đúng cho số serial.

Bây giờ khi đã có đối tượng $volInfo, bạn có thể hiển thị thông tin tiêu đề DIR lên màn hình. 

If ($volInfo.VolumeName -eq "") {

    Write-Host ("Volume in drive " + $drive + " has no label")

} Else {

    Write-Host ("Volume in drive " + $drive + " is " + $volInfo.VolumeName)

}

Write-Host ("Volume Serial Number is " + $serial)

Write-Host ("`nDirectory of " + $args[0] + "`n")

Trong đó:

  • Sử dụng Biến: Tạo biến $message để chứa thông điệp hiển thị, giúp mã ngắn gọn hơn.
  • Cấu trúc If: Kiểm tra sự tồn tại của VolumeName một cách trực tiếp.
  • Dòng mới: Sử dụng ký tự “`n để thêm dòng trống trước và sau thông tin folder.

Bạn có để ý đến cụm -eq trong câu lệnh If không? Đây là một toán tử dùng để so sánh sự bằng nhau. Dưới đây là bảng liệt kê tất cả các toán tử so sánh:

Toán tửÝ nghĩa
-eqSo sánh bằng
-neSo sánh không bằng
-gtSo sánh lớn hơn
-geSo sánh lớn hơn hoặc bằng
-ltSo sánh nhỏ hơn
-leSo sánh nhỏ hơn hoặc bằng
Bảng phân tích ý nghĩa của các toán tử

Ký tự -i đứng trước các toán tử so sánh cho biết rằng các toán tử này không phân biệt giữa chữ hoa và chữ thường.

DIR.PS1: Danh sách file/folder

  • Khởi tạo và lấy danh sách file/folder: $items = Get-ChildItem $args[0] | Sort-Object
    • Sử dụng lệnh Get-ChildItem để lấy danh sách các đối tượng file và folder từ tham số đầu vào $args[0].
    • Sắp xếp danh sách bằng Sort-Object và lưu vào biến $items
  • Khởi tạo biến đếm:
    • $totalDirs: Đếm số folder.
    • $totalFiles: Đếm số file.
    • $totalSize: Tổng kích thước của tất cả các file.
  • Lặp qua danh sách và hiển thị thông tin:
    • Sử dụng ForEach để lặp qua từng đối tượng trong $items.
    • Định dạng ngày tháng và kích thước file bằng mã định dạng xâu .NET.
    • Kiểm tra xem đối tượng là folder hay file bằng cách kiểm tra ký tự đầu tiên của thuộc tính Mode.
ForEach ($i In $items) {

    $date = "{0, -20:MM/dd/yyyy hh:mm tt}" -f $i.LastWriteTime

    $file = $i.Name

    If ($i.Mode.SubString(0, 1) -eq "d") {

        $totalDirs++

        $list = $date + " {0, -15}" -f " " + $file

    } Else {

        $totalFiles++

        $size = "{0, 18:N0}" -f $i.Length

        $list = $date + $size + " " + $file

    }

    $totalSize += $i.Length

    Write-Host $list

}
  • Hiển thị kết quả:
    • Sau khi lặp xong, bạn có thể hiển thị tổng số folder, tổng số file và tổng kích thước (nếu cần).

DIR.PS1: Hậu đề (Footer)

Write-Host ("{0, 16:N0}" -f $totalFiles + " File(s)" + `

"{0, 15:N0}" -f $totalSize + " bytes")

Write-Host ("{0, 16:N0}" -f $totalDirs + " Dir(s)" + `

"{0, 16:N0}" -f $volInfo.FreeSpace + " bytes free`n")
  • Hiển thị tổng số file: Sử dụng Write-Host để in ra số lượng file và tổng kích thước của chúng, định dạng với dấu phẩy cho dễ đọc.
  • Hiển thị tổng số folder và không gian trống: Tương tự, in ra số lượng folder và không gian trống trên phân vùng ổ đĩa, cũng được định dạng cho dễ nhìn.

Khi chạy đoạn code này, bạn sẽ thấy thông tin tổng hợp về số lượng file, folder, kích thước file và không gian trống, giúp dễ dàng theo dõi tình trạng của folder và ổ đĩa.

Dự báo và khả năng nâng cao cho script PowerShell

  • Kiểm tra lỗi: Thêm kiểm tra để đảm bảo đường dẫn hợp lệ trước khi thực hiện lệnh Get-ChildItem.
  • Sự khác biệt trong đếm folder: Script không tính hai folder đặc biệt “.”“..”, dẫn đến số lượng folder ít hơn so với lệnh CMD.EXE DIR.
  • Tùy chọn sắp xếp: Hiện tại, script chỉ sắp xếp theo tên. Có thể mở rộng để sắp xếp theo các thuộc tính khác như kích thước hoặc ngày sửa đổi.
  • Hiển thị nội dung folder con: Cần bổ sung khả năng hiển thị nội dung của tất cả các folder con, không chỉ folder cấp cao.

Nâng cao tiềm năng:

  • Thêm tùy chọn lọc: Cho phép người dùng lọc theo loại file hoặc kích thước.
  • Xuất dữ liệu: Cung cấp tùy chọn xuất dữ liệu ra file CSV hoặc TXT.
  • Giao diện người dùng: Phát triển giao diện đồ họa để dễ sử dụng hơn cho người không quen với dòng lệnh.

Bảo mật trong PowerShell

Khi sử dụng PowerShell, bảo mật là một yếu tố quan trọng mà người dùng cần chú ý. Dưới đây là một số vấn đề bảo mật cần lưu ý cùng với giải pháp khắc phục:

  • Quyền truy cập và ủy quyền: Sử dụng PowerShell với quyền Administrator cần được kiểm soát chặt chẽ. Hạn chế quyền cao và chỉ sử dụng khi thật sự cần thiết.
  • Script Malware và Attacks: PowerShell có thể bị lợi dụng để chạy các script độc hại. Người dùng cần cẩn trọng với các script từ nguồn không đáng tin cậy và thiết lập biện pháp phát hiện, ngăn chặn.
  • Logging và Monitoring: Ghi nhật ký và theo dõi hoạt động trong PowerShell là rất quan trọng để phát hiện các hoạt động đáng ngờ. Theo dõi các lệnh và script được thực thi để đảm bảo an toàn cho hệ thống.
Bảo mật trong PowerShell
Bảo mật trong PowerShell

So sánh Windows PowerShell với các Shell và công cụ scripting khác

PowerShell và Python

Python là một ngôn ngữ lập trình được ưa chuộng nhờ cú pháp rõ ràng và dễ hiểu, thường được sử dụng trong phát triển web, phân tích dữ liệu và tự động hóa. Trong khi đó, PowerShell chủ yếu được thiết kế để quản lý hệ thống và tự động hóa, giúp người dùng thực hiện các nhiệm vụ quản trị một cách hiệu quả trên các nền tảng của Microsoft.

Mặc dù PowerShell có khả năng scripting mạnh mẽ, Python lại có phạm vi ứng dụng rộng hơn, với sự linh hoạt và thư viện phong phú phục vụ cho nhiều lĩnh vực khác nhau. Điều này khiến Python trở thành lựa chọn ưu việt cho những tác vụ không chỉ giới hạn trong quản lý hệ thống, trong khi PowerShell là công cụ lý tưởng cho các nhiệm vụ liên quan đến dịch vụ Windows.

So sánh Powershell với Python
So sánh Powershell với Python

PowerShell và Bash

Bash (Bourne Again SHell) là một shell dòng lệnh được sử dụng rộng rãi trên các hệ thống UNIX và Linux, chủ yếu phục vụ cho việc quản lý file và thực thi các chương trình. Trái lại, PowerShell là một shell dòng lệnh được tích hợp sâu vào hệ điều hành Windows và các sản phẩm của Microsoft, mang đến khả năng tự động hóa nâng cao và kết nối chặt chẽ với .NET Framework.

Trong khi Bash sử dụng cú pháp truyền thống cho các lệnh shell, PowerShell áp dụng cú pháp tương tự như .NET, giúp dễ đọc hiểu hơn cho những người quen thuộc với môi trường Microsoft. Sự khác biệt này làm cho mỗi công cụ phù hợp với các mục đích sử dụng khác nhau trong quản lý hệ thống và phát triển ứng dụng.

So sánh Powershell với Bash
So sánh Powershell với Bash

PowerShell và Command Prompt

PowerShell được xem là một lựa chọn mạnh mẽ hơn so với Command Prompt, chủ yếu nhờ vào việc sử dụng Cmdlets – các lệnh ngắn gọn và ghép thay vì các lệnh đơn giản. Cmdlets cho phép quản trị hệ thống hiệu quả hơn, thay thế cho các công cụ quản lý Registry và Windows. Mặc dù PowerShell có thể chấp nhận một số lệnh từ Command Prompt, nhưng chúng được gọi là alias thay vì Cmdlet. 

Một điểm khác biệt quan trọng là PowerShell tập trung vào các đối tượng, với mỗi phần dữ liệu xuất ra từ Cmdlet là một đối tượng, giúp người dùng dễ dàng thao tác với dữ liệu phức tạp hơn. Việc tích hợp với .NET Framework cũng cho phép PowerShell sử dụng các giao diện .NET, mang lại khả năng mở rộng và linh hoạt cao hơn. Tóm lại, PowerShell không chỉ là một phiên bản nâng cao của Command Prompt mà còn mở ra nhiều khả năng mới cho người dùng trong việc quản lý và tự động hóa hệ thống.

PowerShell và Command Prompt
PowerShell và Command Prompt

Các tài nguyên học tập Windows PowerShell

Để học và sử dụng PowerShell hiệu quả, người dùng có thể tham khảo các tài nguyên sau:

  • Microsoft Docs for PowerShell: Cung cấp hướng dẫn chi tiết và cập nhật về tất cả các khía cạnh của PowerShell, từ cơ bản đến nâng cao, kèm theo ví dụ minh họa.
  • Microsoft Learn – PowerShell: Cung cấp các khóa học và mô-đun học tập giúp phát triển kỹ năng sử dụng PowerShell.

Các quyển sách như “Learn Windows PowerShell in a Month of Lunches” và “Windows PowerShell Cookbook” cũng là những tài liệu tuyệt vời cho cả người mới bắt đầu và những người muốn nâng cao kiến thức chuyên sâu về PowerShell.

Tài nguyên học tập Windows PowerShell
Tài nguyên học tập Windows PowerShell

Câu hỏi thường gặp

PowerShell có thể được sử dụng để quản lý các hệ thống ảo hóa không?

Có, PowerShell có thể được sử dụng để quản lý các hệ thống ảo hóa. Công cụ cung cấp các Cmdlets mạnh mẽ cho việc quản lý và tự động hóa các tác vụ liên quan đến ảo hóa, chẳng hạn như Hyper-V. Người dùng có thể cấu hình, quản lý và tương tác với các máy ảo một cách hiệu quả thông qua PowerShell, giúp tiết kiệm thời gian và nâng cao hiệu suất công việc.

PowerShell có thể được sử dụng để quản lý các ứng dụng Microsoft Office không?

Có, PowerShell cung cấp các Cmdlets cho phép người dùng tự động hóa và quản lý các tác vụ liên quan đến Office, như cài đặt, cấu hình và quản lý tài liệu. Điều này giúp tiết kiệm thời gian và nâng cao hiệu quả công việc cho người dùng trong môi trường doanh nghiệp.

Lời kết

Trên đây là các thông tin về Windows PowerShell là gì và cách cấu hình cũng như cài đặt công cụ này. Nếu bạn có bất kỳ thắc mắc nào hãy để lại bình luận ngay bên dưới, Vietnix sẽ giải đáp nhanh nhất!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG