19Aug

Geek School: Μορφοποίηση, Φιλτράρισμα και Σύγκριση σε PowerShell

click fraud protection

Σε αυτή την έκδοση του Geek School, εξετάζουμε τη μορφοποίηση, το φιλτράρισμα και τη σύγκριση αντικειμένων στον αγωγό.

Να είστε βέβαιος να διαβάσετε τα προηγούμενα άρθρα της σειράς:

  • Μάθετε πώς να αυτοματοποιήσετε τα Windows με PowerShell
  • Μάθετε να χρησιμοποιείτε Cmdlets στο PowerShell
  • Μάθετε πώς να χρησιμοποιείτε αντικείμενα στο PowerShell

Και μείνετε συντονισμένοι για την υπόλοιπη σειρά όλη την εβδομάδα.

Default Formatting

Όταν ξεκίνησα πρώτα με το PowerShell, σκέφτηκα ότι όλα ήταν μαγεία, αλλά η αλήθεια είναι ότι χρειάζεται λίγο χρόνο για να καταλάβεις τι συμβαίνει κάτω από την κουκούλα.Το ίδιο ισχύει και για το σύστημα μορφοποίησης PowerShell.Στην πραγματικότητα, εάν εκτελείτε το cmdlet Get-Service, η παραγόμενη παραγωγή εμφανίζει μόνο 3 ιδιότητες: Status, Name και DisplayName.

Αλλά εάν διοχετεύσετε το Get-Service στο Get-Member, βλέπετε ότι τα αντικείμενα ServiceController έχουν πολύ περισσότερα από αυτά τα τρία ακίνητα, έτσι τι συμβαίνει;

Η απάντηση βρίσκεται μέσα σε ένα κρυφό αρχείο που καθορίζει τον τρόπο με τον οποίο τα περισσότερα από τα ενσωματωμένα cmdlet εμφανίζουν την έξοδο τους.Για να πάρετε μια κατανόηση, πληκτρολογήστε τα ακόλουθα στο κέλυφος και πατήστε enter.

instagram viewer

σημειωματάριο C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ DotNetTypes.format.ps1xml

Αν χρησιμοποιήσουμε τη λειτουργία αναζήτησης του σημειωματάριου, μπορούμε γρήγορα να μεταβούμε στην ενότητα που περιγράφει λεπτομερώς την έξοδο του cmdlet Get-Service αναζητώντας το ServiceControllerτύπος.

Ξαφνικά, μπορείτε να δείτε ότι κάτω από την κουκούλα PowerShell μορφοποιούν οποιαδήποτε αντικείμενα στον αγωγό που είναι τύπου ServiceController και δημιουργούν έναν πίνακα με τρεις στήλες: Status, Name και DisplayName.Αλλά τι γίνεται αν ο τύπος που ασχολείστε δεν έχει μια καταχώρηση σε αυτό το αρχείο ή οποιοδήποτε άλλο αρχείο μορφής για αυτό το θέμα;Λοιπόν, είναι πραγματικά απλό.Εάν το αντικείμενο που βγαίνει από τον αγωγό έχει 5 ή περισσότερες ιδιότητες, το PowerShell εμφανίζει όλες τις ιδιότητες του αντικειμένου σε μια λίστα.εάν έχει λιγότερες από 5 ιδιότητες, τις εμφανίζει σε έναν πίνακα.

Μορφοποίηση των δεδομένων σας

Εάν δεν είστε ικανοποιημένοι με την προεπιλεγμένη μορφοποίηση ενός αντικειμένου ή τύπου, μπορείτε να μετακινήσετε τη δική σας μορφοποίηση.Υπάρχουν τρία cmdlets που πρέπει να ξέρετε για να το κάνετε αυτό.

  • Μορφοποίηση-Λίστα
  • Format-Table

Format-Wide

Απλά παίρνει μια συλλογή αντικειμένων και εμφανίζει μια μοναδική ιδιότητα για κάθε αντικείμενο.Από προεπιλογή, θα αναζητήσει μια ιδιότητα ονόματος.εάν τα αντικείμενα σας δεν περιέχουν ιδιότητα ονόματος, θα χρησιμοποιήσουν την πρώτη ιδιότητα του αντικειμένου μόλις οι ιδιότητες έχουν ταξινομηθεί αλφαβητικά.

Get-Service |

με μορφή μορφής ευρείας οθόνης Όπως μπορείτε να δείτε, είναι επίσης προεπιλεγμένες σε δύο στήλες, παρόλο που μπορείτε να καθορίσετε τόσο την ιδιότητα που θέλετε να χρησιμοποιήσετε όσο και πόσες στήλες θέλετε να εμφανίζονται.

Get-Service |Format-Wide -Property Όνομα_εφαρμογής -Οθόνη 6

Εάν κάτι έχει διαμορφωθεί ως πίνακας από προεπιλογή, μπορείτε πάντα να το αλλάξετε σε προβολή λίστας χρησιμοποιώντας το cmdlet Format-List.Ας ρίξουμε μια ματιά στην έξοδο του cmdlet Get-Process.

Αυτή η προβολή πίνακα ταιριάζει πραγματικά αυτό το είδος πληροφοριών πολύ καλά, αλλά ας υποκρινόμαστε ότι θέλουμε να την δούμε σε μορφή λίστας.Το μόνο που πρέπει να κάνουμε είναι να το διοχετεύσουμε στο Format-List .

Get-Process |Λίστα μορφοποίησης

Όπως μπορείτε να δείτε, υπάρχουν μόνο τέσσερα στοιχεία που εμφανίζονται στη λίστα από προεπιλογή.Για να δείτε όλες τις ιδιότητες του αντικειμένου, μπορείτε να χρησιμοποιήσετε ένα χαρακτήρα μπαλαντέρ.

Get-Process |Λίστα μορφής-ιδιότητα *

Εναλλακτικά, μπορείτε να επιλέξετε μόνο τις ιδιότητες που θέλετε.

Get-Process |Μορφή-Λίστα-όνομα ιδιοκτησίας, id

Format-Table, από την άλλη πλευρά, παίρνει τα δεδομένα και μετατρέπει σε πίνακα.Δεδομένου ότι τα δεδομένα μας από τη Get-Process έχουν ήδη τη μορφή πίνακα, μπορούμε να τα χρησιμοποιήσουμε για να επιλέγουμε εύκολα ιδιότητες που θέλουμε να εμφανίζονται στον πίνακα.Χρησιμοποίησα την παράμετρο AutoSize για να προσαρμόσετε όλα τα δεδομένα σε μια ενιαία οθόνη.

Get-Process |Δημιουργία ονόματος πίνακα, id -AutoSize

Φιλτράρισμα και σύγκριση

Ένα από τα καλύτερα πράγματα για τη χρήση ενός αγωγού βάσει αντικειμένων είναι ότι μπορείτε να φιλτράρετε αντικείμενα έξω από τον αγωγό σε οποιοδήποτε στάδιο χρησιμοποιώντας το cmdlet Where-Object.

Get-Service |Όπου-αντικείμενο{ $ _. Κατάσταση -eq "Εκτέλεση"}

Χρήση όπου το αντικείμενο είναι πραγματικά πολύ απλό.Το $ _ αντιπροσωπεύει το τρέχον αντικείμενο αγωγού, από το οποίο μπορείτε να επιλέξετε μια ιδιότητα που θέλετε να φιλτράρετε.Εδώ, διατηρούνται μόνο αντικείμενα όπου η ιδιότητα Κατάσταση είναι ίση με την εκτέλεση.Υπάρχουν λίγοι χειριστές σύγκρισης που μπορείτε να χρησιμοποιήσετε στο μπλοκ δέσμης ενεργειών φιλτραρίσματος:

  • eq( Equal To)
  • neq( Not Equal To)
  • gt( μεγαλύτερο από
  • ge)
  • lt
  • lt
  • (
  • )

Ο πλήρης κατάλογος και περισσότερες πληροφορίες μπορούν να προβληθούν στο αρχείο εννοιολογικής βοήθειας about_comparison, ωστόσο χρειάζεται αρκετός χρόνος για να συνηθίσετε στη σύνταξη Where-Obeject.Αυτό είναι όλο για αυτή τη φορά!