Geek School: Học cách sử dụng các đối tượng trong PowerShell

Mục lục:

Geek School: Học cách sử dụng các đối tượng trong PowerShell
Geek School: Học cách sử dụng các đối tượng trong PowerShell

Video: Geek School: Học cách sử dụng các đối tượng trong PowerShell

Video: Geek School: Học cách sử dụng các đối tượng trong PowerShell
Video: Cách cài hệ điều hành cho Raspberry Pi vô cùng dễ! - YouTube 2024, Tháng tư
Anonim
Hiểu các đối tượng là một trong những khái niệm cơ bản để "nhận" 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 so với bất kỳ trình vỏ nào khác hiện có ở đó.
Hiểu các đối tượng là một trong những khái niệm cơ bản để "nhận" 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 so với bất kỳ trình vỏ nào khác hiện có ở đó.

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.

Image
Image

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.

Bạn có thể thấy các thuộc tính và phương thức của đối tượng bằng cách chuyển nó tới lệnh Get-Member. Các đối tượng mà một đầu ra lệnh ghép ngắn PowerShell là các kiểu cơ bản chủ yếu từ khuôn khổ.Net, nhưng bạn có thể tạo các đối tượng riêng của mình nếu bạn cần sử dụng một ngôn ngữ như C # hoặc sử dụng kiểu PSObject.
Bạn có thể thấy các thuộc tính và phương thức của đối tượng bằng cách chuyển nó tới lệnh Get-Member. Các đối tượng mà một đầu ra lệnh ghép ngắn PowerShell là các kiểu cơ bản chủ yếu từ khuôn khổ.Net, nhưng bạn có thể tạo các đối tượng riêng của mình nếu bạn cần sử dụng một ngôn ngữ như C # hoặc sử dụng kiểu PSObject.

Đườ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

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à các phương thức được gọi chung là các thành viên lớp, giải thích tại sao bạn sử dụng lệnh Get-Member để lấy danh sách tất cả các phương thức và thuộc tính mà đối tượng có. Tuy nhiên, lệnh ghép ngắn Get-Member cũng trả về một phần thông tin quan trọng khác, kiểu đố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:
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à các phương thức được gọi chung là các thành viên lớp, giải thích tại sao bạn sử dụng lệnh Get-Member để lấy danh sách tất cả các phương thức và thuộc tính mà đối tượng có. Tuy nhiên, lệnh ghép ngắn Get-Member cũng trả về một phần thông tin quan trọng khác, kiểu đố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.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

Lưu ý rằng có một lệnh ghép ngắn được gọi là Stop-Service; chúng ta hãy xem trợ giúp cho nó.
Lưu ý rằng có một lệnh ghép ngắn được gọi là Stop-Service; chúng ta hãy xem trợ giúp cho nó.

Get-Help –Name Stop-Service

Có vẻ như tham số InputObject lấy một mảng các đối tượng ServiceController làm đầu vào. Thông thường, nếu bạn thấy thông số có tên InputObject, nó sẽ chấp nhận đầu vào từ Pipeline, nhưng chỉ để đảm bảo hãy xem toàn bộ trợ giúp cho tham số đó.
Có vẻ như tham số InputObject lấy một mảng các đối tượng ServiceController làm đầu vào. Thông thường, nếu bạn thấy thông số có tên InputObject, nó sẽ chấp nhận đầu vào từ Pipeline, nhưng chỉ để đảm bảo hãy xem toàn bộ trợ giúp cho tham số đó.

Get-Help -Name Stop-Service –Full

Nghi ngờ của chúng tôi là chính xác. Vì vậy, tại thời điểm này, chúng tôi biết những điều sau đây:
Nghi ngờ của chúng tôi là chính xác. Vì vậy, tại thời điểm này, chúng tôi biết những điều sau đây:
  • 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

Đó là tất cả cho những người này. Lần sau chúng ta xem xét cách chúng ta có thể định dạng, lọc và so sánh các đối tượng trong Pipeline.
Đó là tất cả cho những người này. Lần sau chúng ta xem xét cách chúng ta có thể định dạng, lọc và so sánh các đối tượng trong Pipeline.

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.

Đề xuất: