Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Trong lịch sử, các tiện ích dòng lệnh trên hệ thống Unix được phát triển tốt hơn trên Windows, nhưng với sự ra đời của một giải pháp mới, tình hình đã thay đổi.

Windows PowerShell cho phép quản trị viên hệ thống tự động hóa hầu hết các tác vụ thông thường. Với sự trợ giúp của nó, bạn có thể thay đổi cài đặt, dừng và khởi động dịch vụ, đồng thời thực hiện bảo trì hầu hết các ứng dụng đã cài đặt. Sẽ là sai lầm nếu coi cửa sổ màu xanh lam như một trình thông dịch lệnh khác. Cách tiếp cận này không phản ánh bản chất của những đổi mới do Microsoft đề xuất. Trên thực tế, các khả năng của Windows PowerShell rộng hơn nhiều: trong một loạt bài viết ngắn, chúng tôi sẽ cố gắng tìm hiểu xem giải pháp của Microsoft khác với các công cụ mà chúng tôi quen thuộc hơn như thế nào.

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Các tính năng chính 

Tất nhiên, Windows PowerShell chủ yếu là một shell lệnh với ngôn ngữ kịch bản, ban đầu được xây dựng trên .NET Framework và sau này là .NET Core. Không giống như các shell chấp nhận và trả về dữ liệu văn bản, Windows PowerShell hoạt động với các lớp .NET, có các thuộc tính và phương thức. PowerShell cho phép bạn chạy các lệnh phổ biến và cũng cung cấp cho bạn quyền truy cập vào các đối tượng COM, WMI và ADSI. Nó sử dụng nhiều kho lưu trữ khác nhau, chẳng hạn như hệ thống tệp hoặc sổ đăng ký Windows, để truy cập vào cái gọi là. các nhà cung cấp. Điều đáng chú ý là khả năng nhúng các thành phần thực thi PowerShell vào các ứng dụng khác để thực hiện các hoạt động khác nhau, bao gồm cả. thông qua giao diện đồ họa. Điều ngược lại cũng đúng: nhiều ứng dụng Windows cung cấp quyền truy cập vào giao diện quản lý của chúng thông qua PowerShell. 

Windows PowerShell cho phép bạn:

  • Thay đổi cài đặt hệ điều hành;
  • Quản lý dịch vụ và quy trình;
  • Định cấu hình vai trò và thành phần máy chủ;
  • Cài đặt phần mềm;
  • Quản lý phần mềm đã cài đặt thông qua các giao diện đặc biệt;
  • Nhúng các thành phần thực thi vào chương trình của bên thứ ba;
  • Tạo tập lệnh để tự động hóa các tác vụ quản trị;
  • Làm việc với hệ thống tệp, sổ đăng ký Windows, kho chứng chỉ, v.v.

Shell và môi trường phát triển

Windows PowerShell tồn tại ở hai dạng: ngoài trình giả lập bảng điều khiển có shell lệnh, còn có môi trường tập lệnh tích hợp (ISE). Để truy cập giao diện dòng lệnh, chỉ cần chọn lối tắt thích hợp từ menu Windows hoặc chạy powershell.exe từ menu Run. Một cửa sổ màu xanh lam sẽ xuất hiện trên màn hình, có sự khác biệt đáng kể về khả năng so với cmd.exe thời xưa. Có tính năng tự động hoàn thành và các tính năng khác quen thuộc với người dùng shell lệnh cho hệ thống Unix.

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Để làm việc với shell bạn cần nhớ một số phím tắt:

  • Mũi tên lên và xuống cuộn qua lịch sử để lặp lại các lệnh đã nhập trước đó;
  • Mũi tên phải ở cuối dòng gõ lại từng ký tự lệnh trước đó;
  • Ctrl+Home xóa văn bản đã nhập từ vị trí con trỏ đến đầu dòng;
  • Ctrl+End xóa văn bản từ con trỏ đến cuối dòng.

F7 hiển thị một cửa sổ chứa các lệnh đã nhập và cho phép bạn chọn một trong số chúng. Bảng điều khiển cũng hoạt động bằng cách chọn văn bản bằng chuột, dán sao chép, định vị con trỏ, xóa, xóa lùi - mọi thứ chúng tôi yêu thích.

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Windows PowerShell ISE là một môi trường phát triển hoàn chỉnh với trình soạn thảo mã hỗ trợ các tab và tô sáng cú pháp, trình thiết kế lệnh, trình gỡ lỗi tích hợp và các tính năng lập trình thú vị khác. Nếu bạn viết dấu gạch nối sau tên lệnh trong trình chỉnh sửa môi trường phát triển, bạn sẽ nhận được tất cả các tham số có sẵn trong danh sách thả xuống, cho biết loại. Bạn có thể khởi chạy PowerShell ISE thông qua phím tắt từ menu hệ thống hoặc sử dụng tệp thực thi powershell_ise.exe.

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Lệnh ghép ngắn 

Trong Windows PowerShell, cái gọi là. lệnh ghép ngắn. Đây là các lớp .NET chuyên biệt cung cấp nhiều chức năng khác nhau. Chúng được đặt tên theo nguyên tắc “Hành động-Đối tượng” (hoặc “Động từ-Danh từ, nếu bạn thích) và liên kết được phân tách bằng dấu gạch nối giống với vị ngữ và chủ ngữ trong các câu ngôn ngữ tự nhiên. Ví dụ: Get-Help theo nghĩa đen có nghĩa là “Get-Help” hoặc trong ngữ cảnh PowerShell: “Show-Help”. Trên thực tế, đây là một dạng tương tự của lệnh man trong hệ thống Unix và các hướng dẫn sử dụng trong PowerShell cần được yêu cầu theo cách này chứ không phải bằng cách gọi các lệnh ghép ngắn bằng phím –help hoặc /?.. Đừng quên tài liệu trực tuyến về PowerShell: Microsoft có nó khá chi tiết.

Ngoài Get, cmdlets còn sử dụng các động từ khác để biểu thị hành động (và nói đúng ra thì không chỉ có động từ). Trong danh sách dưới đây chúng tôi đưa ra một số ví dụ:

Add - thêm vào;
Clear - lau dọn;
Enable - bật;
Disable - tắt;
New - tạo nên;
Remove - xóa bỏ;
Set - hỏi;
Start - chạy;
Stop - dừng lại;
Export - xuất khẩu;
Import - nhập khẩu.

Có các lệnh ghép ngắn hệ thống, người dùng và tùy chọn: khi thực thi, tất cả chúng đều trả về một đối tượng hoặc một mảng đối tượng. Chúng không phân biệt chữ hoa chữ thường, tức là Từ quan điểm của người phiên dịch lệnh, không có sự khác biệt giữa Get-Help và get-help. Ký hiệu ';' được sử dụng để phân tách nhưng nó chỉ được yêu cầu nếu một số lệnh ghép ngắn được thực thi trên một dòng. 

Lệnh ghép ngắn Windows PowerShell được nhóm thành các mô-đun (NetTCPIP, Hyper-V, v.v.) và có lệnh ghép ngắn Get-Command để tìm kiếm theo đối tượng và hành động. Bạn có thể hiển thị trợ giúp về nó như thế này:

Get-Help Get-Command

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Theo mặc định, lệnh hiển thị trợ giúp nhanh, nhưng các tham số (đối số) sẽ được chuyển đến lệnh ghép ngắn nếu cần. Với sự trợ giúp của họ, chẳng hạn, bạn có thể nhận trợ giúp chi tiết (tham số -Detailed) hoặc trợ giúp đầy đủ (-Full), cũng như hiển thị các ví dụ (tham số -Examples):

Get-Help Get-Command -Examples

Trợ giúp trong Windows PowerShell được cập nhật bằng lệnh ghép ngắn Update-Help. Nếu một dòng lệnh quá dài, các đối số lệnh ghép ngắn có thể được chuyển sang dòng tiếp theo bằng cách viết ký tự dịch vụ ''' và nhấn Enter - chỉ cần viết xong lệnh trên một dòng và tiếp tục trên dòng khác sẽ không hoạt động.

Dưới đây là một số ví dụ về các lệnh ghép ngắn phổ biến: 

Get-Process - hiển thị các tiến trình đang chạy trong hệ thống;
Get-Service - hiển thị các dịch vụ và tình trạng của chúng;
Get-Content - hiển thị nội dung của tập tin.

Đối với các lệnh ghép ngắn và các tiện ích bên ngoài được sử dụng thường xuyên, Windows PowerShell có các từ đồng nghĩa ngắn gọn - bí danh. Ví dụ: dir là bí danh của Get-ChildItem. Ngoài ra còn có các lệnh tương tự từ hệ thống Unix trong danh sách các từ đồng nghĩa (ls, ps, v.v.) và lệnh ghép ngắn Get-Help được gọi bằng lệnh trợ giúp. Danh sách đầy đủ các từ đồng nghĩa có thể được xem bằng lệnh ghép ngắn Get-Alias ​​​​:

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Tập lệnh, hàm, mô-đun và ngôn ngữ PowerShell

Các tập lệnh Windows PowerShell được lưu trữ dưới dạng tệp văn bản thuần túy có phần mở rộng .ps1. Bạn không thể chạy chúng bằng cách nhấp đúp: bạn cần nhấp chuột phải để mở menu ngữ cảnh và chọn “Chạy trong PowerShell”. Từ bảng điều khiển, bạn sẽ phải chỉ định đường dẫn đầy đủ đến tập lệnh hoặc chuyển đến thư mục thích hợp và ghi tên tệp. Các tập lệnh đang chạy cũng bị giới hạn bởi chính sách hệ thống và để kiểm tra cài đặt hiện tại, bạn có thể sử dụng lệnh ghép ngắn Get-ExecutionPolicy, lệnh này sẽ trả về một trong các giá trị sau:

Restricted — việc chạy các tập lệnh bị cấm (theo mặc định);
AllSigned - chỉ các tập lệnh được ký bởi nhà phát triển đáng tin cậy mới được phép chạy;
RemoteSigned - Được phép chạy các script có chữ ký và của chính mình;
Unrestricted - Được phép chạy bất kỳ tập lệnh nào.

Quản trị viên có hai lựa chọn. Cách an toàn nhất liên quan đến việc ký các tập lệnh, nhưng đây là một phép thuật khá nghiêm trọng - chúng ta sẽ giải quyết nó trong các bài viết sau. Bây giờ chúng ta hãy đi theo con đường ít trở ngại nhất và thay đổi chính sách:

Set-ExecutionPolicy RemoteSigned

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Để thực hiện việc này, bạn sẽ phải chạy PowerShell với tư cách quản trị viên, mặc dù bạn có thể sử dụng một tham số đặc biệt để thay đổi chính sách cho người dùng hiện tại.

Các tập lệnh được viết bằng ngôn ngữ lập trình hướng đối tượng, các lệnh của chúng được đặt tên theo nguyên tắc giống như các lệnh ghép ngắn đã thảo luận trước đó: “Action-Object” (“Động từ-Danh từ”). Mục đích chính của nó là tự động hóa các tác vụ quản trị, nhưng nó là ngôn ngữ được giải thích đầy đủ có tất cả các cấu trúc cần thiết: nhảy có điều kiện, vòng lặp, biến, mảng, đối tượng, xử lý lỗi, v.v. Bất kỳ trình soạn thảo văn bản nào cũng phù hợp để viết tập lệnh, nhưng thuận tiện nhất là chạy Windows PowerShell ISE.

Bạn có thể truyền tham số cho tập lệnh, đặt chúng là bắt buộc và cũng có thể đặt giá trị mặc định. Windows PowerShell cũng cho phép bạn tạo và gọi các hàm theo cách tương tự như lệnh ghép ngắn, sử dụng cấu trúc Hàm và dấu ngoặc nhọn. Tập lệnh có các chức năng được gọi là mô-đun và có phần mở rộng .psm1. Các mô-đun phải được lưu trữ trong các thư mục được xác định trong các biến môi trường PowerShell. Bạn có thể xem chúng bằng lệnh sau:

Get-ChildItem Env:PSModulePath | Format-Table -AutoSize

Băng tải

Trong ví dụ trước, chúng tôi đã sử dụng một thiết kế quen thuộc với người dùng Unix shell. Trong Windows PowerShell, thanh dọc cũng cho phép bạn chuyển đầu ra của một lệnh sang đầu vào của lệnh khác, nhưng có một sự khác biệt đáng kể trong việc triển khai quy trình: chúng ta không còn nói về một tập hợp ký tự hoặc một số văn bản. Lệnh ghép ngắn tích hợp hoặc hàm do người dùng xác định trả về các đối tượng hoặc mảng đối tượng và cũng có thể nhận chúng làm đầu vào. Giống như Bourne shell và nhiều phiên bản kế nhiệm của nó, PowerShell sử dụng một quy trình để đơn giản hóa các tác vụ phức tạp.

Ví dụ đơn giản nhất về đường ống trông như thế này:

Get-Service | Sort-Object -property Status

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Lệnh ghép ngắn Get-Service được thực thi trước tiên, sau đó tất cả các dịch vụ mà nó nhận được sẽ được chuyển đến lệnh ghép ngắn Sort-Object để sắp xếp theo thuộc tính Trạng thái. Đối số nào mà kết quả của phần trước của quy trình được chuyển đến sẽ phụ thuộc vào loại của nó - thường đó là Đối tượng đầu vào. Vấn đề này sẽ được thảo luận chi tiết hơn trong bài viết dành riêng cho ngôn ngữ lập trình PowerShell. 

Nếu muốn, bạn có thể tiếp tục chuỗi và chuyển kết quả của Sort-Object sang một lệnh ghép ngắn khác (chúng sẽ được thực thi từ trái sang phải). Nhân tiện, người dùng Windows cũng có quyền truy cập vào thiết kế quen thuộc với tất cả Unixoids để xuất ra từng trang: 

Get-Service | Sort-Object -property Status | more

Chạy các tác vụ ở chế độ nền 

Thông thường, cần phải chạy một lệnh nhất định trong nền để không phải chờ kết quả thực thi của lệnh đó trong phiên shell. Windows PowerShell có một số lệnh ghép ngắn cho tình huống này:

Start-Job — khởi chạy một tác vụ nền;
Stop-Job — dừng một tác vụ nền;
Get-Job — xem danh sách các tác vụ nền;
Receive-Job — xem kết quả của một tác vụ nền;
Remove-Job — xóa một tác vụ nền;
Wait-Job — chuyển tác vụ nền trở lại bảng điều khiển.

Để bắt đầu một tác vụ nền, chúng ta sử dụng lệnh ghép ngắn Start-Job và chỉ định một lệnh hoặc tập hợp các lệnh trong dấu ngoặc nhọn:

Start-Job {Get-Service}

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Các tác vụ nền trong Windows PowerShell có thể được thao tác bằng cách biết tên của chúng. Trước tiên, hãy tìm hiểu cách hiển thị chúng:

Get-Job

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Bây giờ hãy hiển thị kết quả của Job1:

Receive-Job Job1 | more

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Nó khá đơn giản.

Thực thi lệnh từ xa

Windows PowerShell cho phép bạn chạy các lệnh và tập lệnh không chỉ cục bộ mà còn trên máy tính từ xa và thậm chí trên toàn bộ nhóm máy. Có nhiều hướng khác nhau để làm điều đó:

  • Nhiều lệnh ghép ngắn có một tham số -ComputerName, nhưng theo cách này, chẳng hạn, sẽ không thể tạo ra một băng tải;
  • Lệnh ghép ngắn Enter-PSSession cho phép bạn tạo phiên tương tác trên máy từ xa; 
  • Sử dụng lệnh ghép ngắn Invoke-Command Bạn có thể chạy lệnh hoặc tập lệnh trên một hoặc nhiều máy tính từ xa.

Phiên bản PowerShell

Kể từ lần phát hành đầu tiên vào năm 2006, PowerShell đã thay đổi rất nhiều. Công cụ này có sẵn cho nhiều hệ thống chạy trên các nền tảng phần cứng khác nhau (x86, x86-64, Itanium, ARM): Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008/2008 R2, Windows 7, Windows 8, Windows 8.1, Windows RT, Windows RT 8.1, Windows Server 2012/2012 R2, Windows 10, Windows Server 2016, GNU/Linux và OS X. Bản phát hành mới nhất 6.2 được phát hành vào ngày 10 tháng 2018 năm XNUMX. Các tập lệnh được viết cho các phiên bản cũ hơn có nhiều khả năng hoạt động trong các phiên bản sau, nhưng các vấn đề có thể nảy sinh khi chuyển ngược lại, vì qua nhiều năm phát triển, một số lượng lớn lệnh ghép ngắn mới đã xuất hiện trong PowerShell. Bạn có thể tìm ra phiên bản shell lệnh được cài đặt trên máy tính của mình bằng cách sử dụng thuộc tính PSVersion của biến tích hợp $PSVersionTable:

$PSVersionTable.PSVersion

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Bạn cũng có thể sử dụng lệnh ghép ngắn:

Get-Variable -Name PSVersionTable –ValueOnly

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính
Điều tương tự có thể được thực hiện bằng cách sử dụng lệnh ghép ngắn Get-Host. Trên thực tế, có rất nhiều tùy chọn, nhưng để sử dụng chúng bạn cần học ngôn ngữ lập trình PowerShell, đó là những gì chúng ta sẽ làm trong bài viết tiếp theo

Kết quả 

Microsoft đã cố gắng tạo ra một shell lệnh thực sự mạnh mẽ với môi trường tích hợp thuận tiện để phát triển tập lệnh. Điều phân biệt nó với các công cụ mà chúng ta quen thuộc trong thế giới Unix là sự tích hợp sâu của nó với các hệ điều hành thuộc họ Windows, cũng như với phần mềm dành cho chúng và nền tảng .NET Core. PowerShell có thể được gọi là shell hướng đối tượng vì các lệnh ghép ngắn và hàm do người dùng xác định trả về các đối tượng hoặc mảng đối tượng và có thể nhận chúng làm đầu vào. Chúng tôi nghĩ rằng tất cả quản trị viên máy chủ Windows nên sở hữu công cụ này: đã qua thời gian họ có thể làm việc mà không cần dòng lệnh. Một giao diện điều khiển nâng cao đặc biệt cần thiết trên VPS giá rẻ chạy Windows Server Core của chúng tôi, nhưng đó là một câu chuyện hoàn toàn khác.

Windows PowerShell là gì và nó ăn với cái gì? Phần 1: Các tính năng chính

Chỉ những người dùng đã đăng ký mới có thể tham gia khảo sát. Đăng nhập, xin vui lòng.

Những chủ đề nào nên được đề cập đầu tiên trong các bài viết tiếp theo của loạt bài này?

  • 53,2%Lập trình trong PowerShell123

  • 42,4%Các chức năng và mô-đun PowerShell98

  • 22,1%Làm thế nào để ký vào kịch bản của riêng bạn?51

  • 12,1%Làm việc với kho thông qua nhà cung cấp28

  • 57,6%Tự động hóa quản trị máy tính bằng PowerShell133

  • 30,7%Quản lý phần mềm và nhúng các tệp thực thi PowerShell vào các sản phẩm của bên thứ ba71

231 người dùng bình chọn. 37 người dùng bỏ phiếu trắng.

Nguồn: www.habr.com

Thêm một lời nhận xét