Windows PowerShell là gì?

Kiến Thức

Khi nói đến việc chạy các lệnh trên Windows, PowerShell đã trở thành một con át chủ bài trong lỗ hổng. Trong nhiều năm, những người đam mê bị giới hạn trong giới hạn của dòng lệnh Windows nhưng vào năm 2006, PowerShell đã nổi lên như một giải pháp thay thế mạnh mẽ.

Windows PowerShell là gì?

PowerShell là một công cụ “tự động hóa” và giao diện dòng lệnh (CLI) tương tác, được thiết kế bởi Microsoft, giúp thiết kế cấu hình hệ thống và tự động hóa các tác vụ quản trị.

Công cụ này có dòng lệnh riêng với ngôn ngữ lập trình duy nhất. Trước hết, PowerShell được thiết kế để quản lý các đối tượng trên máy tính của người dùng.

Ngày nay PowerShell cung cấp cho người dùng một môi trường mở rộng, nơi họ có thể thực thi và tự động hóa các tác vụ quản lý hệ thống. Người dùng có thể truy cập tài nguyên từ Active Directory đến Exchange Server thông qua một chương trình. Về cốt lõi, PowerShell cho phép người dùng truy cập:

  • Command Prompt 
  • PowerShell Commands
  • .NET Framework API 
  • Windows Management Instrumentation 
  • Windows Component Object Model 

Vì PowerShell đã trở thành một ứng dụng mã nguồn mở, người dùng dựa trên Linux và Unix hiện có thể truy cập vào nền tảng đa năng này. PowerShell’s được sử dụng chủ yếu để giúp người dùng tự động hóa các công việc quản trị. Thay vì thực hiện các tác vụ tẻ nhạt và lặp đi lặp lại, người dùng có thể chỉ cần tạo các tập lệnh và ra lệnh và PowerShell sẽ tự động hoàn thành chúng. Người dùng có thể tùy chỉnh hàng trăm lệnh, được gọi là lệnh ghép ngắn.

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

Bao gồm 25 câu lệnh cơ bản như sau:

No.Command nameAliasDescription
1Set-Locationcd, chdir, slSets the current working location to a specified location.
2Get-Contentcat, gc, typeGets the content of the item at the specified location.
3Add-ContentacAdds content to the specified items, such as adding words to a file.
4Set-ContentscWrites or replaces the content in an item with new content.
5Copy-Itemcopy, cp, cpiCopies an item from one location to another.
6Remove-Itemdel, erase, rd, ri, rm, rmdirDeletes the specified items.
7Move-Itemmi, move, mvMoves an item from one location to another.
8Set-ItemsiChanges the value of an item to the value specified in the command.
9New-ItemniCreates a new item.
10Start-JobsajbStarts a Windows PowerShell background job.
11Compare-Objectcompare, difCompares two sets of objects.
12Group-ObjectgroupGroups objects that contain the same value for specified properties.
13Invoke-WebRequestcurl, iwr, wgetGets content from a web page on the Internet.
14Measure-ObjectmeasureCalculates the numeric properties of objects, and the characters, words, and lines in string objects, such as files …
15Resolve-PathrvpaResolves the wildcard characters in a path, and displays the path contents.
16Resume-JobrujbRestarts a suspended job
17Set-Variableset, svSets the value of a variable. Creates the variable if one with the requested name does not exist.
18Show-CommandshcmCreates Windows PowerShell commands in a graphical command window.
19Sort-ObjectsortSorts objects by property values.
20Start-ServicesasvStarts one or more stopped services.
21Start-Processsaps, startStarts one or more processes on the local computer.
22Suspend-JobsujbTemporarily stops workflow jobs.
23Wait-JobwjbSuppresses the command prompt until one or all of the Windows PowerShell background jobs running in the session are …
24Where-Object?, whereSelects objects from a collection based on their property values.
25Write-Outputecho, writeSends the specified objects to the next command in the pipeline. If the command is the last command in the pipeline,…

Cách sử dụng Microsoft PowerShell

PowerShell lý tưởng cho các quản trị viên công ty điều hành các hoạt động quản lý phức tạp trên các mạng công ty lớn. Thay vì đối chiếu thông tin về hàng trăm máy chủ và dịch vụ khác nhau theo cách thủ công (sẽ mất nhiều thời gian), bạn có thể chỉ cần chạy một tập lệnh trên PowerShell để tự động cung cấp thông tin lại cho bạn.

Nói chung, PowerShell có lợi nhất cho những người dùng đã có kinh nghiệm sử dụng các dòng lệnh. Để sử dụng PowerShell, bạn có thể chạy nhiều lệnh cmdlets, scripts, executables, và .NET. Với mục đích của bài viết này, chúng tôi chủ yếu tập trung vào cmdlets và scripts để giúp bạn nắm bắt các nguyên tắc cơ bản.

So sánh PowerShell và Command Prompt

Đối với nhiều người dùng, PowerShell là một lựa chọn thay thế tốt cho Command Prompt. Lý do là nó chỉ đơn giản là mạnh hơn. Một trong những điểm khác biệt lớn nhất là PowerShell sử dụng lệnh gọi là cmdlets – lệnh ghép & ngắn thay vì command – lệnh. Cmdlets thay thế cho Registry Management và Windows management để quản trị hệ thống. Ngược lại, Command Prompt bị giới hạn hơn nhiều trong các lệnh đơn giản.

Có một số điểm chéo về cú pháp syntax giữa hai nền tảng vì PowerShell sẽ chấp nhận một số lệnh command prompt như là ipconfigtocd. Tuy nhiên, chúng được gọi là bí alias hơn là lệnh cmdlet. Một điểm khác biệt chính nữa là PowerShell tập trung vào các object – đối tượng. Mỗi phần dữ liệu xuất ra từ một cmdlet là một đối tượng chứ không phải là text – chuỗi văn bản. Điều này giúp người dùng điều hướng dễ dàng hơn đối với dữ liệu phức tạp. Việc bao gồm “.NET framwork” cũng cho phép các scripts  củaPowerShell sử dụng các giao diện .NET. Tóm lại, PowerShell là Command Prompt trên cùng một gốc rễ.

Khởi động Windows PowerShell

Trước khi chúng ta đi sâu vào những điều cơ bản của việc sử dụng PowerShell, trước tiên bạn cần truy cập vào giao diện chính. Nếu bạn dùng Windows 10 thì bạn đã có quyền truy cập vào PowerShell 5, hay Windows 8-8.1 thì có quyền truy cập vào PowerShell 4, nhưng nếu bạn đang sử dụng Windows 7, bạn sẽ cần cài đặt nó trong .NET framwork. Trên tất cả các hệ điều hành, PowerShell cung cấp hai giao diện riêng biệt.

Giao diện nâng cao là Windows PowerShell Integrated Scripting Environment (ISE), hoạt động như một GUI toàn diện cho người dùng có kinh nghiệm. Và giải pháp thay thế cơ bản hơn là bảng điều khiển PowerShell Console, cung cấp một dòng lệnh để người dùng nhập lệnh của họ. Người mới bắt đầu nên gắn bó với PowerShell Console cho đến khi học được các nguyên tắc/nguyên lý cơ bản của PowerShell.

Để khởi động PowerShell trên Windows 10, bạn cần phải là adminstrator. Đăng nhập với tư cách admin, nhấp vào nút Start Bắt đầu và tìm Windows PowerShell. Nhấp chuột phải và chọn Run as Administrator. Trên Windows 8.1, chỉ cần tìm kiếm PowerShell trong thư mục System – Hệ thống. Tương tự, trên Windows 7, thư mục mặc định cho PowerShell là thư mục Accessories – Phụ kiện, sau khi bạn cài đặt.

Cách để chạy Run cmdlets

Windows PowerShell là gì

“Tóm lại, cmdlet là một lệnh đơn chức năng. Bạn nhập cmdlet vào dòng lệnh giống như bạn làm với lệnh truyền thống. Cmdlets là cách chính để tương tác với CLI.

Trong PowerShell, hầu hết các cmdlets được viết bằng C # và bao gồm các hướng dẫn được thiết kế để thực hiện một hàm trả về đối tượng .NET object.

Hơn 200 cmdlet có thể được sử dụng trong PowerShell. Windows PowerShell Command Prompt không phân biệt chữ hoa chữ thường, vì vậy, các lệnh này có thể được nhập bằng chữ hoa hoặc chữ thường. Các lệnh cmdlets chính được liệt kê bên dưới:

Get-Location – Get the current directory

Set-Location – Get the current directory

Move-item – Move a file to a new location (Di chuyển)

Copy-item – Copy a file to a new location (sao chép)

Rename – item Rename an existing file (đổi tên)

New-item – Create a new file (Tạo file mới)

Để có danh sách đầy đủ các lệnh có sẵn cho bạn, hãy sử dụng lệnh ghép ngắn Get-Command. Trong dòng lệnh, bạn sẽ nhập như sau:

PS C:\> Get-Command

Điều quan trọng cần lưu ý là Microsoft hạn chế người dùng sử dụng tùy chỉnh custom cmdlets PowerShell trong default setting – cài đặt mặc định của nó. Để sử dụng cmdlets PowerShell, bạn cần thay đổi ExecutionPolicy từ Restricted thành RemoteSigned. RemoteSigned sẽ cho phép bạn chạy các tập lệnh của riêng mình nhưng sẽ ngăn các tập lệnh unsigned – chưa được ký của người dùng khác.

Để thay đổi chính sách Execution của bạn, hãy nhập lệnh PowerShell sau:

PS C:\>   Set-ExecutionPolicy

Điều quan trọng cần lưu ý là Microsoft hạn chế người dùng sử dụng tùy chỉnh custom cmdlets PowerShell trong default setting – cài đặt mặc định của nó. Để sử dụng cmdlets PowerShell, bạn cần thay đổi ExecutionPolicy từ Restricted thành RemoteSigned. RemoteSigned sẽ cho phép bạn chạy các tập lệnh của riêng mình nhưng sẽ ngăn các tập lệnh unsigned – chưa được ký của người dùng khác.Để thay đổi chính sách Execution của bạn, hãy nhập lệnh PowerShell sau:

PS C:> Set-ExecutionPolicy

Để thay đổi chính sách RemoteSigned của bạn, hãy nhập lệnh PowerShell sau:

PS C:> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned

Hãy chắn chắn bạn đang sử dụng tài khoản admin để có quyền thiết lập thay đổi.

Cách để chạy Run một PowerShell Scripts

Các quy trình và lệnh dựa trên tập lệnh là một phần nền tảng của tính linh hoạt của PowerShell. Trong PowerShell, script – tập lệnh về cơ bản là một text – tệp văn bản có phần mở rộng ps1 trong tên tệp của nó. Để tạo một tập lệnh mới, bạn chỉ cần mở sổ ghi chú của Windows, nhập các lệnh của bạn và lưu với ‘.ps1’ ở cuối tên.

Để chạy một script, hãy nhập folder-  thư mục và filename – tên tệp vào cửa sổ PowerShell:

PS c:\powershell\mynewscript.ps1

Sau khi bạn hoàn thành việc này, script đã chọn của bạn sẽ chạy.

Những điểm giống với Windows Commands

Khi bạn mới sử dụng PowerShell, bạn có thể cảm thấy choáng ngợp khi thử và tìm hiểu một thư viện lệnh hoàn toàn mới. Tuy nhiên, điều mà hầu hết người dùng mới không nhận ra là cú pháp được sử dụng trên dòng lệnh của Windows trùng lặp với PowerShell. Điều này được thực hiện dễ dàng hơn bởi PowerShell không phân biệt chữ hoa chữ thường.

Giống như Command Prompt, trên PowerShell, lệnh cd vẫn là thay đổi các directory – thư mục và dir vẫn cung cấp danh sách files – các tệp trong thư mục đã chọn. Do đó, điều quan trọng cần nhớ là bạn không nhất thiết phải bắt đầu lại từ đầu. 

Như đã nói, điều quan trọng cần lưu ý là chúng không được coi PowerShell là dạng lệnh hoàn chỉnh vì chúng là giống dạng alias – bí danh. Mặc dù bạn có thể thử một số lệnh của Command Prompt trong PowerShell, nhưng bạn nên tìm hiểu càng nhiều càng tốt về các lệnh mới. Tuy nhiên, trải nghiệm trước Command Prompt chắc chắn có thể giúp người mới với PowerShell hiểu rõ hơn.

Sao lưu CSDL – SQL Database với PowerShell

Nhiều người sử dụng PowerShell để sao lưu cơ sở dữ liệu SQL. Giao diện dòng lệnh có thể tiến hành sao lưu toàn bộ cơ sở dữ liệu, sao lưu tệp và sao lưu transaction log. Có nhiều cách để sao lưu cơ sở dữ liệu trong PowerShell, nhưng một trong những cách đơn giản nhất là sử dụng lệnh Backup-SqlDatabase. Ví dụ:

PS C:> Backup-SqlDatabase -ServerINstance “Computer\Instance” -Database “Databasecentral”

Thao tác này sẽ tạo bản sao lưu cơ sở dữ liệu của một cơ sở dữ liệu với tên ‘Databasecentral’ (hoặc tên của cơ sở dữ liệu bạn đã chọn).

Để sao lưu transaction log, bạn sẽ nhập:

PS C:> Backup-SqlDatabase -ServerInstance “Computer\Instance” -Database “Databasecentral” -BackupAction Log

Thao tác này sẽ tạo transaction log của cơ sở dữ liệu đã chọn.

Các lệnh PowerShell cơ bản

Việc sử dụng bí danh sẽ chỉ giúp bạn có được PowerShell cho đến nay, vì vậy điều quan trọng là phải cam kết tìm hiểu mọi thứ bạn có thể về các lệnh gốc của PowerShell. Chúng tôi đã đề cập đến một số trong số này ở trên, nhưng chúng tôi sẽ phân tích những vấn đề chính một cách chi tiết hơn bên dưới.

Get-Help

Lệnh này là lệnh nằm lòng cho các bạn mới dùng PowerShell. Lệnh Get-Help có thể được sử dụng để nhận trợ giúp về bất kỳ lệnh PowerShell nào khác. Ví dụ: nếu bạn biết tên của một lệnh, nhưng bạn không biết nó có tác dụng gì hoặc cách sử dụng nó, lệnh Get-Help cung cấp cú pháp lệnh đầy đủ.

Ví dụ: nếu bạn muốn xem Get-Process hoạt động như thế nào, bạn sẽ nhập:

PS C:> Get-Help -Name Get-Process

Như đã đề cập trước trong hướng dẫn này, Microsoft có một số hạn chế nhất định ngăn chặn chính sách thực thi scripts trên PowerShell trừ khi bạn thay đổi nó. Khi thiết lập chính sách thực thi, bạn có bốn tùy chọn để lựa chọn:

  • Restricted – Mặc định chính sách thực thi ngăn chặn scripts hoạt động.
  • All Signed – Sẽ chạy scripts nào được xác nhận bởi người dùng.
  • Remote Signed – cho phép chạy scripts được tạo ra trong local.
  • Unrestricted – Không ngăn chặn.

PS C:> Get-ExecutionPolicy

Nếu bạn đang sử dụng PowerShell, không phải lúc nào bạn cũng có thể làm việc trên máy chủ mà bạn quen thuộc. Chạy lệnh Get-Execution Policy – Chính sách sẽ cho phép bạn xem chính sách đang hoạt động trên máy chủ trước khi chạy một script mới. Nếu bạn sau đó nhìn thấy máy chủ trong câu hỏi hoạt động theo một chính sách Restricted – hạn chế, thì bạn có thể thực hiện lệnh Set-ExecutionPolicy để thay đổi lại.

Get-Service

Một trong những lệnh quan trọng nhất là Get-Service, cung cấp cho người dùng danh sách tất cả các dịch vụ được cài đặt trên hệ thống, cả đang chạy và dừng. Lệnh ghép ngắn này có thể được hướng dẫn bằng cách sử dụng tên dịch vụ hoặc đối tượng cụ thể.

Ví dụ, nếu bạn đã gõ PS C:> Get-Service, bạn sẽ được hiển thị một danh sách tất cả các dịch vụ trên máy tính của bạn, tên & trạng thái của dịch vụ.

Sử dụng lệnh này để lấy các dịch vụ cụ thể, gõ: PS C: Get-Service “WMI*” để lấy tất cả các dịch vụ bắt đầu bằng WMI.

Nếu bạn muốn hạn chế đầu ra cho các dịch vụ đang hoạt động trên máy tính của bạn, hãy nhập lệnh sau:

PS C:\ Get-Service | Where-Object {$_.Status -eq “Running”}

ConvertTo-HTML

Khi sử dụng PowerShell, bạn có thể muốn “tạo báo cáo” về thông tin bạn đã xem. Một trong những cách tốt nhất là sử dụng lệnh ConvertTo-HTML. Lệnh ghép ngắn này cho phép bạn xây dựng báo cáo với bảng và màu sắc, có thể giúp trực quan hóa dữ liệu phức tạp. Đơn giản chỉ cần chọn một đối tượng và thêm nó vào lệnh. Ví dụ: bạn có thể nhập:

Get-PSDrive | ConvertTo-Html

Điều này trả về một khối lượng thông tin, vì vậy bạn nên giới hạn nó vào một tệp có lệnh Out-File. Một lệnh thay thế tốt hơn là:

Get-PSD Drive | ConvertTo-Html | Out-File -FilePath PSDrives.html

Export-CSV (and Get-Service)

Không kém phần quan trọng để tăng khả năng hiển thị là lệnh Export-CSV. Nó cho phép bạn xuất dữ liệu PowerShell vào tệp CSV. Về cơ bản, lệnh này tạo ra một tệp CSV biên dịch tất cả các đối tượng bạn đã chọn trong PowerShell. Mỗi đối tượng có dòng hoặc hàng riêng trong tệp CSV. Lệnh này chủ yếu được sử dụng để tạo bảng tính và chia sẻ dữ liệu với các chương trình bên ngoài.

Để sử dụng lệnh này, bạn sẽ gõ:

PS C:> Get-Service | Export-CSV c:\service.csv

Điều quan trọng cần nhớ là không định dạng đối tượng trước khi chạy lệnh xuất CSV là Export-CSV. Điều này là do định dạng các  objects – đối tượng chỉ theo định dạng tập tin CSV chứ không phải là các định dạng ban đầu của đối tượng. Trong trường hợp bạn muốn gửi thuộc tính cụ thể của một đối tượng đến một tập tin CSV, bạn sẽ sử dụng lệnh Select-Object.

Để sử dụng lệnh Select-Object cmdlet, hãy nhập:

PS C:> Get-Service | Select-Object Name, Status | Export-CSV
c:\Service.csv

Get-Process

Nếu bạn muốn xem tất cả các quá trình hiện đang chạy trên hệ thống của bạn, lệnh Get-Process là rất quan trọng. Để có danh sách tất cả các quy trình hiện hoạt trên máy tính của bạn, hãy nhập:

PS C:\ Get-Process

Lưu ý rằng nếu bạn không chỉ định bất kỳ thông số nào, bạn sẽ nhận được bảng phân tích về mọi quy trình đang hoạt động trên máy tính của mình. Để chọn một quy trình cụ thể, hãy thu hẹp kết quả theo tên quy trình hoặc ID quy trình và kết hợp với lệnh Format-List, hiển thị tất cả các thuộc tính có sẵn. Ví dụ:

PS C:\ Get-Process windowrd, explorer | Format-List *

Get-EventLog

Nếu bạn muốn truy cập nhật ký sự kiện của máy tính (hoặc ghi nhật ký trên máy tính từ xa) trong khi sử dụng PowerShell, thì bạn sẽ cần lệnh Get-EventLog. Lệnh này chỉ hoạt động trên classic event logs, vì vậy bạn sẽ cần lệnh Get-WinEvent cho các bản ghi logs từ sau Windows Vista.Để chạy lệnh event log, hãy nhập:

PS C:> Get-EventLog -List

Điều này sẽ hiển thị tất cả event log trên máy tính của bạn.

Một trong những lý do phổ biến nhất khiến người dùng xem event logs là để xem lỗi. Nếu bạn muốn xem các sự kiện lỗi trong nhật ký của mình, chỉ cần nhập.

PS C:> Get-EventLog -LogName System -EntryType Error

Nếu bạn muốn nhận nhật ký sự kiện từ nhiều máy tính, hãy chỉ định thiết bị bạn muốn xem (được liệt kê dưới đây là “Server1” và “Server2”). Ví dụ:

PS C:> Get-EventLog – LogName “Windows PowerShell” -ComputerName “local computer”, “Server1”, “Server2”.

Các thông số bạn có thể sử dụng để tìm kiếm event logs bao gồm:

  • After – chỉ định ngày giờ  và lệnh sẽ xác định vị trí events xảy ra sau đó.
  • AsBaseObject – cung cấp a System.Diagnostics.EventLogEntry cho mỗi event
  • AsString – trả về output dạng chuỗi strings
  • Before – chỉ định ngày giờ  và lệnh sẽ xác định vị trí events xảy ra trước đó.
  • ComputerName – thường để chị remote computer.
  • EntryType – xác định entry-type của events (Error, Failure Audit, Success Audit, Information, Warning)
  • Index – xác định index values, mà lệnh có thể tìm thấy được từ event.
  • List – cung cấp danh sách event logs
  • UserName – xác định usernames liên quan đến event

Stop-Process

Khi sử dụng PowerShell, không có gì lạ khi thấy một quá trình treo. Bất cứ khi nào điều này xảy ra, bạn có thể sử dụng Get-Process để xem tên của quá trình gặp khó khăn và sau đó dừng nó với lệnh Stop-Process. Nói chung, bạn chấm dứt một quá trình theo tên của nó. Ví dụ:

PS C:> Stop-Process -Name “notepad”

Trong ví dụ này, đã chấm dứt Notepad bằng cách sử dụng lệnh Stop-Process.

PowerShell – công cụ mạnh mẽ với giao diện dòng lệnh

Việc chuyển đổi sang PowerShell có vẻ khá phức tạp, dù giao diện dòng lệnh của nó hoạt động giống như bất kỳ giao diện nào khác. Nó có thể có cmdlets độc đáo của riêng mình, nhưng cũng có những hướng dẫn trực tuyến giúp bạn quản lý các tasks bạn cần. Để hiểu hết về PowerShell, bạn chỉ cần làm quen với vô số lệnh có sẵn.

Là một người dùng mới, nó rất nản chí bởi 200+ cmdlets của PowerShell. Hãy chắc chắn rằng bạn bắt đầu với giao diện dòng lệnh trước khi dùng GUI. Bất kể bạn mới sử dụng PowerShell hay giao diện dòng lệnh, bạn tìm kiếm trên trực tuyến giúp bạn tận dụng tối đa công cụ mạnh mẽ này.

Bài viết liên quan

Pin It on Pinterest