Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Scripts

Sức mạnh của PowerShell, Phần 1

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called The Power of PowerShell.
The Power of PowerShell, Part 2

Vietnamese (Tiếng Việt) translation by Dai Phong (you can also view the original English article)

PowerShell là một shell tương tác và ngôn ngữ kịch bản từ Microsoft làm thay đổi suy nghĩ về một shell dòng lệnh. Nó có các tính năng rất thú vị hơn và vượt trội hơn so với những shell Unix quen thuộc, và có một hệ sinh thái mạnh mẽ và cộng đồng đông đảo.

Trong hai phần hướng dẫn này, bạn sẽ tìm hiểu về một số thứ tuyệt vời mà bạn có thể làm với PowerShell, lịch sử và kiến trúc của nó, khái niệm của nó và so sánh nó với shell Unix chẳng hạn như Bash. Hãy sẵn sàng cho một cuộc hành trình thú vị!

Cài đặt PowerShell

Nếu bạn đang ở trên Windows 10, thì bạn đã có sẵn nó. Nếu không, tải nó từ trang web của Microsoft.

Khi PowerShell được cài đặt, điều đầu tiên bạn muốn làm là cho phép thực thi script. Khởi chạy PowerShell với quyền quản trị và gõ: Set-ExecutionPolicy RemoteSigned. Bạn chỉ cần làm điều đó một lần. Bây giờ, cập nhật các tập tin trợ giúp: Update-Help -Force.

Những điều thú vị mà bạn có thể làm với PowerShell

Hãy bắt đầu với một minh hoạ về mức độ sâu rộng của PowerShell. Đây chỉ là một danh sách tùy ý để làm cho bạn cảm thấy hứng thú. Nó không toàn diện, cũng không nhất thiết phải là những điều ấn tượng nhất mà bạn có thể làm với PowerShell.

Chơi Video

Dưới đây là một dòng lệnh dùng để chơi các tập tin video (hoặc bất kỳ tập tin đa phương tiện nào):

(New-object –COM WMPlayer.OCX).openPlayer("Đường dẫn đến tập tin video của bạn")

Nó sẽ mở một cửa sổ media player và lập tức bắt đầu chơi tập tin video của bạn.

Here Strings

PowerShell có một trong những giải pháp hay và trực quan nhất để chạy đa dòng lệnh, hay còn gọi là "here strings". Bạn chỉ cần bắt đầu với @" và kết thúc với "@. Lưu ý rằng các dấu hiệu bắt đầu và kết thúc phải ở trên dòng riêng của chúng, tách biệt với nội dung ở giữa. Dưới đây là một ví dụ:

Tạo số ngẫu nhiên

Chọn một số ngẫu nhiên từ 1 đến 100:

1..50 | Get-Random

Đây là một dòng liên hợp (pipeline) đơn giản. Ở phía bên trái có thể tạo ra tất cả các số nguyên từ 1 đến 50 (bao gồm cả 1 và 50), và sau đó nó được đưa đến lệnh ghép ngắn Get-Random để chọn ra một trong số chúng.

Làm việc với Clipboard (Bộ nhớ tạm)

PowerShell hỗ trợ sâu clipboard. Bạn có thể lấy và thiết lập các đối tượng với định dạng khác nhau. Rõ ràng, văn bản thuần tuý là hoàn toàn có thể, nhưng bạn cũng có thể làm việc với hình ảnh, HTML, RTF và thậm chí là cả các tập tin.

Ở đây, tôi chọn một số tập tin trong explorer và sau đó tôi lấy chúng từ clipboard trong PowerShell:

Nói chuyện

PowerShell cũng có thể nói chuyện!

Liệt kê tất cả các máy ảo đang chạy

Dưới đây là một lệnh liên hợp để liệt kê tất cả các máy ảo đang chạy:

Get-VM | Where-Object { $_.State -eq "Running" }

Hiển thị thanh tiến trình

PowerShell có thể hiển thị một thanh tiến trình khá đẹp cho những tác vụ thực thi lâu. Dưới đây là một ví dụ về tính toán đệ quy tổng kích thước của tất cả các tập tin ở dưới thư mục hiện tại:

Lịch sử của PowerShell

PowerShell 1.0 được phát hành trong năm 2006, nhưng người tạo ra nó Jeffery Snover đã bắt đầu làm việc với nó sớm hơn nhiều. Hãy xem bản tuyên bố vào năm 2002. PowerShell đã đi một chặng đường dài. Windows đã không cập nhật công cụ dòng lệnh. Người quản trị hệ thống và người dùng cao cấp đã phải thực hiện công việc với những sự hỗ trợ nghèo nàng của cmd.exe và các tập tin batch. Đã có một vài nỗ lực yếu ớt để cải thiện các vấn đề với thực thi script trong Windows cho phép các đối tượng hệ thống thực thi script sử dụng VBScript hoặc JScript, nhưng có rất nhiều vấn đề phát sinh với cách làm đó.

PowerShell đã thay đổi tất cả những điều đó và rất nhanh chóng. Nó không chỉ phù hợp với khả năng dòng lệnh của của môi trường *nix mà còn có nhiều cải tiến và thống nhất chưa từng thấy và còn dễ sử dụng nữa.

Bây giờ, phiên bản của PowerShell là 5.1. Trải qua năm tháng cùng với các phiên bản, khả năng và môi trường thực thi đã tăng lên đáng kể.

PowerShell 1.0 hỗ trợ quản trị cục bộ của các máy Windows (bao gồm Windows Server 2003).

PowerShell 2.0 được tích hợp với Windows 7 và Windows Server 2008 R2. Nó thêm hỗ trợ cho điều khiển từ xa và tăng đáng kể khả năng của PowerShell với các tác vụ nền, giao dịch, sự kiện, gỡ lỗi, một môi trường phát triển với Giao diện dồ hoạ (GUI) và nhiều lệnh ghép mới.

PowerShell 3.0 đã được phát hành như một phần của Windows management framework. Nó đã được cài đặt trên Windows 8 và Windows Server 2012. Nó thêm các tác vụ theo lịch trình, phiên kết nối, mô-đun tự động nạp và nhiều lệnh mới.

PowerShell 4.0 đã được tích hợp với Windows 8.1 và Windows Server 2012 R2. Nó thêm hỗ trợ cấu hình trạng thái mong muốn, cải tiến và gỡ lỗi, chẩn đoán mạng, bộ chuyển đổi -PipelineVariable.

PowerShell 5.0 được phát hành như một phần của Windows management framework 5. PowerShell 5.1 được phát hành như một phần của bản cập nhật Windows 10 anniversary. Các tính năng mới bao gồm định nghĩa lớp trong PowerShell, .NET enumerations, gỡ lỗi từ xa và gỡ lỗi các tác vụ nền, DSC local configuration manager và nhiều cải tiến DSC khác.

PowerShell: Ngôn ngữ thực thi script

PowerShell là một ngôn ngữ lập trình rất mạnh mẽ. Nó có thể chạy các script, rõ ràng rồi, nhưng nó cũng có các cơ chế nâng cao hơn như mô-đun, các lệnh ghép tuỳ biến và các lớp. PowerShell là một ngôn ngữ đa hình hỗ trợ hướng đối tượng, hàm và thủ tục.

Nhưng có lẽ các khía cạnh quan trọng nhất của PowerShell đó là nó là một ngôn ngữ chính thức của .NET. Nó tạo ra và sử dụng các đối tượng assemply trong .NET được lập trình trong bất kỳ ngôn ngữ nào, và các đối tượng truyền qua lệnh liên hợp của PowerShell là các đối tượng .NET. PowerShell cũng là ngôn ngữ có kiểu dữ liệu chặt chẽ, nhưng khi thích hợp bạn có thể bỏ qua nó, và bạn không cần phải chỉ định các kiểu nếu bạn không muốn.

Script thủ tục

Để lập trình thủ tục, bạn cần các hàm, điều kiện, và vòng lặp. PowerShell có tất cả những điều đó. Các toán tử so sánh có thể làm bạn ngạc nhiên vì chúng không sử dụng các biểu tượng thông thường. Thay vào đó bạn có: -eq (bằng), -lt (nhỏ hơn), -gt (lớn hơn), -ge (lớn hơn hoặc bằng), vân vân.

Dưới đây là một ví dụ về điều kiện logic được nhập vào từ người dùng và xác nhận nếu nó hợp lệ. Lưu ý việc sử dụng toán tử -as là để cố gắng để chuyển đổi đầu vào thành một số nguyên. Nếu nó thất bại, thì kết quả là $null.

PowerShell có nhiều khả năng và lệnh ghép để làm việc với các tập hợp và phần chia và cắt chúng, vì vậy vòng lặp thường không cần thiết. Tuy nhiên, chỉ trong trường hợp bạn cần đến, thì có rất nhiều cấu trúc vòng lặp bên trong PowerShell. Bạn có thể sử dụng For loops, ForEach loops, While loops, Do-While loops, và cả vòng lặp đặc biệt ForEach-Object. Dưới đây là một số ví dụ.

Lập trình chức năng

PowerShell xoay quanh lập trình chức năng. Lệnh liên hợp là một môi trường thực thi chức năng nơi bạn có thể soạn thảo các hàm hoặc lệnh ghép động. Bạn có thể làm điều đó bằng cách tương tác, hoặc bạn có thể làm trong một script. Nếu bạn muốn lập trình chức năng rõ ràng, bạn cũng có thể làm điều đó nhưng cú pháp thì hơi cồng kềnh. Hãy xem bài viết này: Lập trình chức năng trong PowerShell.

Lập trình hướng đối tượng

Bạn đã nhìn thấy cách sử dụng các đối tượng .NET và các đối tượng được truyền qua lệnh liên hợp. Hãy định nghĩa một lớp trong PowerShell và làm một số OO (hướng đối tượng) cơ bản. Tôi tạo ra ở đây một lớp cho một nhân vật trò chơi với sức khỏe và áo giáp có thể bị hư hại và tính toán sức khỏe của nó. Còn có một phương thức IsAlive() để kiểm tra nếu sức khỏe > 0. Tôi sử dụng một hàm xây dựng.

Lưu ý rằng bạn phải khởi tạo các lớp PowerShell bằng cách sử dụng [<tên lớp>]::new(). Cú pháp New-Object không được hỗ trợ trong PowerShell 5.1.

Bạn thậm chí có thể thừa kế nếu bạn muốn, nhưng tôi cảm thấy tại thời điểm này bạn nên sử dụng một ngôn ngữ khác cho việc đó.

Môi trường tương tác Script

PowerShell kèm theo IDE của chính nó để phát triển script bao gồm một cửa sổ tương tác, hỗ trợ nhiều tab cho các script với tính năng tự hoàn tất code, trình trợ giúp được tích hợp sẵn cho tất cả các lệnh ghép và nhiều hơn nữa. Nó là một công cụ rất hay, và tôi đề nghị bạn hãy thử nó một lần.

Kết luận

Bây giờ, bạn đã nhìn thấy khả năng của PowerShell là một ngôn ngữ script và đã học được kha khá về các mục đích thiết kế và lịch sử của nó. Trong phần hai, tôi sẽ khái quát sâu các khía cạnh tương tác của PowerShell.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.