Hãy nhớ đọc các bài viết trước trong loạt bài này:
- Tìm hiểu cách tự động hóa Windows bằng PowerShell
- Học cách sử dụng Cmdlets trong PowerShell
Và hãy theo dõi phần còn lại của loạt phim trong tuần.
Các đối tượng
Bạn đã bao giờ tự hỏi điều gì đặt PowerShell ngoài vỏ Linux truyền thống như Bash hay thậm chí dấu nhắc lệnh cũ? Câu trả lời thực sự đơn giản: văn bản đầu ra vỏ truyền thống, làm cho việc thực hiện những việc như định dạng và lọc trở nên khó khăn. Tất nhiên, có những công cụ giúp bạn hoàn thành công việc (sed và grep), nhưng vào cuối ngày, nếu bạn muốn phân tích cú pháp văn bản nặng, bạn cần biết các biểu thức chính quy như phía sau bàn tay của bạn.
PowerShell tận dụng khung.Net cơ bản và có cách tiếp cận khác, sử dụng các đối tượng thay vì văn bản. Đối tượng chỉ là một đại diện của một cái gì đó. Chúng là tập hợp các bộ phận và hành động để sử dụng chúng. Chúng ta hãy nhìn vào các bộ phận của một chiếc xe đạp và cách chúng ta có thể sử dụng chúng.
Các đối tượng trong. Net cũng giống nhau, ngoại trừ hai khác biệt nhỏ: “Các phần” được gọi là tính chất và "Hướng dẫn" được gọi là phương pháp. Nếu chúng ta muốn đại diện cho một dịch vụ Windows như một đối tượng, chúng ta có thể quyết định rằng nó là thích hợp để mô tả nó bằng cách sử dụng ba thuộc tính: Service Name, State và Description. Chúng ta cũng cần tương tác với dịch vụ, vì vậy chúng ta có thể cung cấp cho đối tượng phương thức Start, a Stop và Pause.
Đường ống dẫn
Có rất nhiều vỏ Linux với một đường ống dẫn, cho phép bạn gửi văn bản mà một lệnh xuất ra làm đầu vào cho lệnh tiếp theo trong đường ống. PowerShell đưa điều này lên cấp độ tiếp theo bằng cách cho phép bạn lấy các đối tượng mà một lệnh ghép ngắn xuất ra và chuyển chúng thành đầu vào cho lệnh ghép ngắn tiếp theo trong đường ống. Bí quyết là biết loại cmdlet của đối tượng trả về, điều này thực sự dễ dàng khi sử dụng lệnh ghép ngắn Get-Member.
Get-Service | Get-Member
System.ServiceProcess.ServiceController
Vì PowerShell xử lý các đối tượng và không phải văn bản, không phải tất cả các lệnh ghép ngắn đều có thể được liên kết với nhau bằng cách sử dụng đường ống [1]. Điều đó có nghĩa là chúng ta cần tìm một lệnh ghép ngắn đang tìm cách chấp nhận một đối tượng System.ServiceProcess.ServiceController từ đường dẫn.
Get-Command -ParameterType System.ServiceProcess.ServiceController
Get-Help –Name Stop-Service
Get-Help -Name Stop-Service –Full
- Get-Service trả về đối tượng ServiceController
- Stop-Service có một tham số được gọi là InputObject chấp nhận một hoặc nhiều ServiceControllers làm đầu vào.
- Tham số InputObject chấp nhận đầu vào đường ống.
Sử dụng thông tin này chúng ta có thể làm như sau:
Get-Service -Name ‘Apple Mobile Device’ | Stop-Service
Bài tập về nhà
Đọc trên Pipeline đối tượng
Nếu bạn có bất kỳ câu hỏi nào, bạn có thể tweet tôi @taybgibb hoặc chỉ để lại nhận xét.