18Aug
Η κατανόηση αντικειμένων είναι μια από τις θεμελιώδεις έννοιες για να "πάρει" το PowerShell.Ελάτε μαζί μας καθώς εξερευνούμε αντικείμενα και πώς κάνουν το PowerShell καλύτερο από οποιοδήποτε άλλο κέλυφος εκεί έξω σήμερα.
Να είστε βέβαιος να διαβάσετε τα προηγούμενα άρθρα της σειράς:
- Μάθετε πώς να αυτοματοποιήσετε τα Windows με PowerShell
- Μάθετε να χρησιμοποιείτε Cmdlets στο PowerShell
Και παραμείνετε συντονισμένοι για την υπόλοιπη σειρά όλη την εβδομάδα.
Αντικείμενα
Έχετε αναρωτηθεί ποτέ τι θέτει το PowerShell εκτός από ένα παραδοσιακό κέλυφος του Linux όπως το Bash ή ακόμα και την κληρονομιά εντολών κληρονομιάς;Η απάντηση είναι πραγματικά απλή: το κλασικό κέλυφος εξόδου κείμενο, το οποίο καθιστά δύσκολο να κάνει πράγματα όπως η μορφοποίηση και το φιλτράρισμα.Φυσικά, υπάρχουν εργαλεία που σας βοηθούν να κάνετε τη δουλειά( sed και grep έρχονται στο μυαλό σας), αλλά στο τέλος της ημέρας, αν θέλετε να κάνετε οποιουδήποτε είδους λεπτομερή ανάλυση κειμένου, πρέπει να γνωρίζετε κανονικές εκφράσεις όπωςπίσω από το χέρι σας.Το
PowerShell εκμεταλλεύεται το υποκείμενο πλαίσιο. Net και υιοθετεί μια διαφορετική προσέγγιση, χρησιμοποιώντας αντικείμενα αντί για κείμενο.Τα αντικείμενα είναι απλώς μια αναπαράσταση κάτι.Πρόκειται για μια συλλογή μερών και ενεργειών για τη χρήση τους.Ας ρίξουμε μια ματιά στα μέρη ενός ποδηλάτου και πώς μπορούμε να τα χρησιμοποιήσουμε.
Αντικείμενα σε. Net είναι πολύ τα ίδια, εκτός από δύο μικρές διαφορές: τα "Μέρη" ονομάζονται ιδιότητες και οι "Οδηγίες" ονομάζονται μέθοδοι .Αν θέλαμε να αντιπροσωπεύσουμε μια υπηρεσία των Windows ως αντικείμενο, ίσως αποφασίσουμε ότι είναι σκόπιμο να την περιγράψουμε χρησιμοποιώντας τρεις ιδιότητες: Όνομα υπηρεσίας, κατάσταση και περιγραφή.Επίσης, πρέπει να αλληλεπιδράσουμε με την υπηρεσία, οπότε μπορούμε να δώσουμε στο αντικείμενο ένα πρόγραμμα Έναρξη, Διακοπή και Παύση.
Μπορείτε να δείτε τις ιδιότητες και τις μεθόδους ενός αντικειμένου μεταβιβάζοντάς το στο cmdlet Get-Member.Τα αντικείμενα που εξάγουν ένα cmdlet του PowerShell είναι σε μεγάλο βαθμό υποκείμενα τύποι από το. Net framework, αλλά μπορείτε να δημιουργήσετε τα δικά σας αντικείμενα αν χρειαστεί να χρησιμοποιήσετε μια γλώσσα όπως C # ή να χρησιμοποιήσετε τον τύπο PSObject.
Ο αγωγός
Υπάρχουν πολλά κελύφη Linux με αγωγό, επιτρέποντάς σας να στείλετε το κείμενο που μια εντολή εξάγει ως είσοδο στην επόμενη εντολή που βρίσκεται στη διαδρομή.Το PowerShell παίρνει αυτό στο επόμενο επίπεδο επιτρέποντάς σας να πάρετε τα αντικείμενα που εξάγει ένα cmdlet και να τα περάσετε ως είσοδο στο επόμενο cmdlet της αγωγού.Το κόλπο είναι να γνωρίζουμε τι είδους αντικείμενο επιστρέφει το cmdlet, πράγμα που είναι πολύ εύκολο όταν χρησιμοποιείτε το cmdlet Get-Member.
Get-Service |Get-Member
Για λόγους που δεν εμπίπτουν στο πεδίο εφαρμογής αυτού του άρθρου, οι ιδιότητες και οι μέθοδοι αποκαλούνται από κοινού μέλη κλάσης, πράγμα που εξηγεί γιατί χρησιμοποιείτε το cmdlet Get-Member για να λάβετε μια λίστα με όλες τις μεθόδους και τις ιδιότητες ενός αντικειμένου.Ωστόσο, το cmdlet Get-Member επιστρέφει επίσης μια άλλη σημαντική πληροφορία, τον υποκείμενο τύπο αντικειμένου.Στο παραπάνω στιγμιότυπο οθόνης, μπορούμε να δούμε ότι το Get-Service επιστρέφει αντικείμενα του τύπου:
System. ServiceProcess. ServiceController
Δεδομένου ότι το PowerShell ασχολείται με αντικείμενα και όχι με κείμενο, δεν μπορούν όλα τα cmdlet να συνδεθούν μαζί με τη σωλήνωση [1].Αυτό σημαίνει ότι πρέπει να βρούμε ένα cmdlet που προσπαθεί να αποδεχθεί ένα αντικείμενο System. ServiceProcess. ServiceController από τον αγωγό.
Get-Command -ParameterType System. ServiceProcess. ServiceController
Παρατηρήστε ότι υπάρχει ένα cmdlet που ονομάζεται Stop-Service.ας ρίξουμε μια ματιά στη βοήθεια για αυτό.
Λήψη Βοήθειας -Μετάβαση-Υπηρεσία
Φαίνεται ότι η παράμετρος InputObject παίρνει μια σειρά αντικειμένων ServiceController ως είσοδο.Συνήθως, αν δείτε μια παράμετρο που ονομάζεται InputObject, θα δεχτεί είσοδο από τον αγωγό, αλλά για να είμαστε σίγουροι, ας ρίξουμε μια ματιά στην πλήρη βοήθεια για αυτήν την παράμετρο.
Get-Help -Προστασία Stop-Service-Πλήρης
Οι υποψίες μας ήταν σωστές.Έτσι, σε αυτό το σημείο γνωρίζουμε τα εξής:
- Get-Service επιστρέφει αντικείμενα ServiceController
- Stop-Service έχει μια παράμετρο που ονομάζεται InputObject που δέχεται έναν ή περισσότερους ServiceControllers ως είσοδο.
- Η παράμετρος InputObject δέχεται είσοδο αγωγού.
Χρησιμοποιώντας αυτές τις πληροφορίες θα μπορούσαμε να κάνουμε τα εξής:
Get-Service -Μετά τη «Apple Mobile Device» |Stop-Service
Αυτό είναι όλο για τους ανθρώπους αυτού του χρόνου.Την επόμενη φορά θα δούμε πώς μπορούμε να μορφοποιήσουμε, να φιλτράρουμε και να συγκρίνουμε αντικείμενα στον αγωγό.
Ασκήσεις για το σπίτι
- Αναγνώριση στον αγωγό αντικειμένων
Αν έχετε οποιεσδήποτε ερωτήσεις μπορείτε να μου τιτίβετε @ ttybgibb, ή απλά αφήστε ένα σχόλιο.