Geek School: Học cách định dạng, lọc và so sánh trong PowerShell

Mục lục:

Geek School: Học cách định dạng, lọc và so sánh trong PowerShell
Geek School: Học cách định dạng, lọc và so sánh trong PowerShell

Video: Geek School: Học cách định dạng, lọc và so sánh trong PowerShell

Video: Geek School: Học cách định dạng, lọc và so sánh trong PowerShell
Video: Thực hành Cách gộp ô trong word và cách chia ô trong word - YouTube 2024, Tháng mười một
Anonim
Trong ấn bản này của Geek School, chúng ta xem xét định dạng, lọc và so sánh các đối tượng trong Pipeline.
Trong ấn bản này của Geek School, chúng ta xem xét định dạng, lọc và so sánh các đối tượng trong Pipeline.

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
  • Học cách sử dụng các đối tượng trong PowerShell

Và hãy theo dõi phần còn lại của loạt phim trong tuần.

Định dạng mặc định

Khi tôi lần đầu tiên bắt đầu với PowerShell, tôi nghĩ mọi thứ đều là ma thuật, nhưng sự thật là nó chỉ mất một chút thời gian để hiểu những gì đang xảy ra bên dưới mui xe. Điều này cũng đúng cho hệ thống định dạng PowerShell. Trong thực tế, nếu bạn chạy lệnh ghép ngắn Get-Service, đầu ra được tạo ra chỉ hiển thị cho bạn 3 thuộc tính: Trạng thái, Tên và Tên hiển thị.

Nhưng nếu bạn đặt ống Get-Service thành Get-Member, bạn thấy rằng các đối tượng ServiceController có nhiều hơn chỉ ba thuộc tính này, vậy điều gì đang xảy ra?
Nhưng nếu bạn đặt ống Get-Service thành Get-Member, bạn thấy rằng các đối tượng ServiceController có nhiều hơn chỉ ba thuộc tính này, vậy điều gì đang xảy ra?
Câu trả lời nằm trong một tệp ẩn xác định cách mà hầu hết các lệnh ghép ngắn được tích hợp hiển thị đầu ra của chúng. Để hiểu, hãy nhập thông tin sau vào trình bao và nhấn enter.
Câu trả lời nằm trong một tệp ẩn xác định cách mà hầu hết các lệnh ghép ngắn được tích hợp hiển thị đầu ra của chúng. Để hiểu, hãy nhập thông tin sau vào trình bao và nhấn enter.

notepad C:WindowsSystem32WindowsPowerShellv1.0DotNetTypes.format.ps1xml

Nếu chúng ta sử dụng notepad‚Äôs Find function, chúng ta có thể nhanh chóng chuyển đến phần chi tiết đầu ra của lệnh Get-Service bằng cách tìm kiếm kiểu ServiceController.

Đột nhiên, bạn có thể thấy rằng bên dưới mui xe PowerShell đang định dạng bất kỳ đối tượng nào trong Pipeline thuộc loại ServiceController và tạo một bảng có ba cột: Status, Name và DisplayName. Nhưng điều gì sẽ xảy ra nếu loại bạn đang xử lý không có mục nhập trong tệp đó hoặc bất kỳ tệp định dạng nào khác cho vấn đề đó? Vậy thì, nó khá đơn giản. Nếu đối tượng sắp ra khỏi đường ống có từ 5 thuộc tính trở lên, PowerShell sẽ hiển thị tất cả các thuộc tính của đối tượng trong danh sách; nếu nó có ít hơn 5 thuộc tính, nó sẽ hiển thị chúng trong một bảng.
Đột nhiên, bạn có thể thấy rằng bên dưới mui xe PowerShell đang định dạng bất kỳ đối tượng nào trong Pipeline thuộc loại ServiceController và tạo một bảng có ba cột: Status, Name và DisplayName. Nhưng điều gì sẽ xảy ra nếu loại bạn đang xử lý không có mục nhập trong tệp đó hoặc bất kỳ tệp định dạng nào khác cho vấn đề đó? Vậy thì, nó khá đơn giản. Nếu đối tượng sắp ra khỏi đường ống có từ 5 thuộc tính trở lên, PowerShell sẽ hiển thị tất cả các thuộc tính của đối tượng trong danh sách; nếu nó có ít hơn 5 thuộc tính, nó sẽ hiển thị chúng trong một bảng.

Định dạng dữ liệu của bạn

Nếu bạn không hài lòng với định dạng mặc định của một đối tượng hoặc loại, bạn có thể cuộn định dạng của riêng bạn. Có ba lệnh nhỏ bạn cần phải biết để làm điều này.

  • Định dạng-Danh sách
  • Định dạng-Bảng
  • Định dạng rộng
Image
Image

Định dạng rộng chỉ cần lấy một bộ sưu tập các đối tượng và hiển thị một thuộc tính duy nhất của mỗi đối tượng. Theo mặc định, nó sẽ tìm kiếm một thuộc tính tên; nếu đối tượng của bạn không chứa thuộc tính tên, nó sẽ sử dụng thuộc tính đầu tiên của đối tượng khi thuộc tính đã được sắp xếp theo thứ tự bảng chữ cái.

Get-Service | Format-Wide

Như bạn có thể thấy, nó cũng mặc định là hai cột, mặc dù bạn có thể chỉ định cả thuộc tính nào bạn muốn sử dụng, cũng như số lượng cột bạn muốn hiển thị.
Như bạn có thể thấy, nó cũng mặc định là hai cột, mặc dù bạn có thể chỉ định cả thuộc tính nào bạn muốn sử dụng, cũng như số lượng cột bạn muốn hiển thị.

Get-Service | Format-Wide -Property DisplayName -Column 6

Nếu một cái gì đó được định dạng như một bảng theo mặc định, bạn luôn có thể chuyển nó sang chế độ xem danh sách bằng cách sử dụng lệnh ghép ngắn Định dạng-Danh sách. Chúng ta hãy xem kết quả của lệnh Get-Process.
Nếu một cái gì đó được định dạng như một bảng theo mặc định, bạn luôn có thể chuyển nó sang chế độ xem danh sách bằng cách sử dụng lệnh ghép ngắn Định dạng-Danh sách. Chúng ta hãy xem kết quả của lệnh Get-Process.
Image
Image

Chế độ xem dạng bảng này thực sự phù hợp với loại thông tin này rất tốt, nhưng chúng ta giả sử chúng ta muốn xem nó dưới dạng danh sách. Tất cả những gì chúng ta thực sự phải làm là đặt nó vào Định dạng-Danh sách.

Get-Process | Format-List

Như bạn có thể thấy, chỉ có bốn mục được hiển thị trong danh sách theo mặc định. Để xem tất cả các thuộc tính của đối tượng, bạn có thể sử dụng ký tự đại diện.
Như bạn có thể thấy, chỉ có bốn mục được hiển thị trong danh sách theo mặc định. Để xem tất cả các thuộc tính của đối tượng, bạn có thể sử dụng ký tự đại diện.

Get-Process | Format-List –Property *

Ngoài ra, bạn có thể chọn chỉ các thuộc tính bạn muốn.
Ngoài ra, bạn có thể chọn chỉ các thuộc tính bạn muốn.

Get-Process | Format-List –Property name,id

Image
Image

Định dạng-Bảng, mặt khác, lấy dữ liệu và biến nó thành một bảng. Vì dữ liệu của chúng tôi từ Get-Process đã ở dạng một bảng, chúng tôi có thể sử dụng nó để dễ dàng chọn các thuộc tính mà chúng tôi muốn hiển thị trong bảng. Tôi đã sử dụng tham số AutoSize để làm cho tất cả dữ liệu vừa với một màn hình duy nhất.

Get-Process | Format-Table name,id –AutoSize

Image
Image

Lọc và so sánh

Một trong những điều tốt nhất về việc sử dụng một đường ống dựa trên đối tượng là bạn có thể lọc các đối tượng ra khỏi đường ống ở bất kỳ giai đoạn nào bằng cách sử dụng lệnh ghép ngắn Where-Object.

Get-Service | Where-Object {$_.Status -eq “Running”}

Sử dụng nơi đối tượng thực sự rất đơn giản. $ đại diện cho đối tượng đường ống hiện tại, từ đó bạn có thể chọn một thuộc tính mà bạn muốn lọc. Ở đây, chỉ đang giữ các đối tượng trong đó thuộc tính Trạng thái bằng Chạy. Có một vài toán tử so sánh bạn có thể sử dụng trong khối tập lệnh lọc:
Sử dụng nơi đối tượng thực sự rất đơn giản. $ đại diện cho đối tượng đường ống hiện tại, từ đó bạn có thể chọn một thuộc tính mà bạn muốn lọc. Ở đây, chỉ đang giữ các đối tượng trong đó thuộc tính Trạng thái bằng Chạy. Có một vài toán tử so sánh bạn có thể sử dụng trong khối tập lệnh lọc:
  • eq (Bằng với)
  • neq (Không bằng)
  • gt (Lớn hơn)
  • ge (Lớn hơn hoặc Bằng Đến)
  • lt (Ít hơn)
  • le (Ít hơn hoặc Bằng Đến)
  • thích (So khớp chuỗi ký tự đại diện)

Một danh sách đầy đủ và nhiều thông tin hơn có thể được xem trong tệp trợ giúp khái niệm about_comparison, tuy nhiên phải mất một thời gian để sử dụng cú pháp Where-Obeject. Đó là tất cả cho thời gian này!

Đề xuất: