Học Geek Học cách sử dụng các đối tượng trong PowerShell
Hiểu các đối tượng là một trong những khái niệm cơ bản để Nhận được PowerShell. Tham gia với chúng tôi khi chúng tôi khám phá các đối tượng và cách chúng làm cho PowerShell tốt hơn bất kỳ hệ vỏ nào khác hiện nay.
Hãy chắc chắn đọc các bài viết trước trong loạt bài:
- Tìm hiểu cách tự động hóa Windows với PowerShell
- Học cách sử dụng Cmdlets trong PowerShell
Và theo dõi phần còn lại của loạt bài cả tuần.
Các đối tượng
Bạn có bao giờ tự hỏi điều gì làm cho PowerShell khác biệt với trình bao Linux truyền thống như Bash hay thậm chí là dấu nhắc lệnh kế thừa không? Câu trả lời thực sự đơn giản: văn bản đầu ra shell truyền thống, điều này gây khó khăn cho việc thực hiện những việc như định dạng và lọc. 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 đến với tâm trí), nhưng vào cuối ngày, nếu bạn muốn thực hiện bất kỳ loại phân tích văn bản nặng nào, bạn cần biết các biểu thức thông thường như mu bàn tay của bạn.
PowerShell tận dụng khung .Net cơ bản và thực hiện một 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à một tập hợp các bộ phận và hành động để sử dụng chúng. Chúng ta hãy xem các bộ phận của một chiếc xe đạp và làm thế nào chúng ta có thể sử dụng chúng.
Các đối tượng trong .Net rất giống nhau ngoại trừ hai điểm khác biệt nhỏ: Các bộ phận của bộ phận được gọi là tính chất và hướng dẫn của người Viking được gọi là phương pháp. Nếu chúng tôi muốn đại diện cho một Dịch vụ Windows dưới dạng một đối tượng, chúng tôi có thể quyết định rằng nó phù hợp để mô tả nó bằng ba thuộc tính: Tên dịch vụ, Trạng thái và Mô tả. Chúng tôi cũng cần tương tác với dịch vụ, vì vậy chúng tôi có thể cung cấp cho đối tượng một phương thức Bắt đầu, Dừng và Tạm dừng.
Bạn có thể thấy các thuộc tính và phương thức của một đối tượng bằng cách chuyển nó tới lệnh ghép ngắn Get-Member. Các đối tượng mà đầu ra lệnh ghép ngắn PowerShell chủ yếu là các loại cơ bản từ khung .Net, nhưng bạn có thể tạo các đối tượng của riêng mình nếu bạn cần sử dụng ngôn ngữ như C # hoặc sử dụng loại PSObject.
Đường ống dẫn
Có rất nhiều shell 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 làm đầu vào cho lệnh ghép tiếp theo trong đường ống. Bí quyết là biết loại lệnh nào mà lệnh ghép ngắn trả về, điều này thực sự dễ dàng khi sử dụng lệnh ghép ngắn Get-Member.
Nhận dịch vụ | Nhận thành viên
Vì các lý do nằm ngoài phạm vi của bài viết này, các thuộc tính và phương thức được gọi chung là các thành viên lớp, điều này giải thích tại sao bạn sử dụng lệnh ghép ngắn Get-Member để lấy danh sách tất cả các phương thức và thuộc tính mà một đối tượng có. Tuy nhiên, lệnh ghép ngắn thành viên cũng trả về một thông tin quan trọng khác, loại đối tượng cơ bản. Trong ảnh chụp màn hình ở trên, chúng ta có thể thấy rằng Get-Service trả về các đối tượng thuộc loại:
System.ServiceProcess.ServiceCont điều khiển
Vì PowerShell liên quan đến 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 có thể được liên kết với nhau bằ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 muốn chấp nhận một đối tượng System.ServiceProcess.ServiceControll từ đường ống.
Get-Command -ParameterType System.ServiceProcess.ServiceCont điều khiển
Lưu ý rằng có một lệnh ghép ngắn gọi là Dừng dịch vụ; Hãy xem sự giúp đỡ cho nó.
Nhận trợ giúp - Tên dịch vụ dừng
Có vẻ như tham số InputObject lấy một mảng các đối tượng ServiceContoder làm đầu vào. Thông thường, nếu bạn thấy một tham số có tên InputObject, nó sẽ chấp nhận đầu vào từ Đường ống, nhưng để chắc chắn, hãy xem trợ giúp đầy đủ cho tham số đó.
Nhận trợ giúp - Tên dịch vụ dừng -Full
Những nghi ngờ của chúng tôi đã chính xác. Vì vậy, tại thời điểm này, chúng tôi biết như sau:
- Get-Service trả về các đối tượng ServiceContoder
- Stop-Service có một tham số 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 tôi có thể làm như sau:
Nhận dịch vụ -Tên 'Thiết bị di động Apple' | Dừng phục vụ
Đó là tất cả cho thời gian này folks. Lần tới chúng ta xem cách chúng ta có thể định dạng, lọc và so sánh các đối tượng trong Đường ống.
Bài tập về nhà
- Đọc trên Đường ống đối tượng
Nếu bạn có bất kỳ câu hỏi nào, bạn có thể tweet cho tôi @taybgibb, hoặc chỉ để lại nhận xét.