Αρχική σελίδα » πως να » Geek School Learning Πώς να χρησιμοποιήσετε αντικείμενα στο PowerShell

    Geek School Learning Πώς να χρησιμοποιήσετε αντικείμενα στο PowerShell

    Η κατανόηση αντικειμένων είναι μια από τις θεμελιώδεις έννοιες για να "πάρει" το PowerShell. Ελάτε μαζί μας καθώς εξερευνούμε αντικείμενα και πώς κάνουν το PowerShell καλύτερα από οποιοδήποτε άλλο κέλυφος εκεί έξω σήμερα.

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

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

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

    Αντικείμενα

    Έχετε αναρωτηθεί ποτέ τι θέτει το PowerShell εκτός από ένα παραδοσιακό κέλυφος Linux, όπως το Bash, ή ακόμα και το πρότυπο εντολών κληρονομιάς; Η απάντηση είναι πραγματικά απλή: κλασικό κέλυφος εξόδου κείμενο, το οποίο καθιστά δύσκολο να κάνει πράγματα όπως η μορφοποίηση και το φιλτράρισμα. Φυσικά, υπάρχουν εργαλεία που θα σας βοηθήσουν να κάνετε τη δουλειά (sed και grep έρχονται στο νου), αλλά στο τέλος της ημέρας, αν θέλετε να κάνετε οποιοδήποτε είδος βαρέων αναλύσεων κειμένου, πρέπει να γνωρίζετε κανονικές εκφράσεις όπως πίσω από το χέρι σας.

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

    Τα αντικείμενα σε .Net είναι πολύ ίδια, εκτός από δύο μικρές διαφορές: τα "Μέρη" καλούνται ιδιότητες και καλούνται οι "Οδηγίες" μεθόδων. Αν θέλαμε να αντιπροσωπεύσουμε μια υπηρεσία των Windows ως αντικείμενο, ίσως αποφασίσουμε ότι είναι σκόπιμο να την περιγράψουμε χρησιμοποιώντας τρεις ιδιότητες: Όνομα υπηρεσίας, κατάσταση και περιγραφή. Επίσης, πρέπει να αλληλεπιδράσουμε με την υπηρεσία, οπότε μπορούμε να δώσουμε στο αντικείμενο ένα πρόγραμμα Start, Stop και Pause.

    Μπορείτε να δείτε τις ιδιότητες και τις μεθόδους ενός αντικειμένου μεταβιβάζοντάς το στο cmdlet Get-Member. Τα αντικείμενα που εξάγουν ένα cmdlet του PowerShell είναι σε μεγάλο βαθμό υποκείμενα από το .Net, αλλά μπορείτε να δημιουργήσετε τα δικά σας αντικείμενα αν χρειαστεί να χρησιμοποιήσετε μια γλώσσα όπως το C # ή να χρησιμοποιήσετε τον τύπο PSObject.

    Ο αγωγός

    Υπάρχουν πολλά κελύφη Linux με αγωγό, επιτρέποντάς σας να στείλετε το κείμενο που μια εντολή εξάγει ως είσοδο στην επόμενη εντολή που βρίσκεται στη διαδρομή. Το PowerShell παίρνει αυτό στο επόμενο επίπεδο επιτρέποντάς σας να πάρετε τα αντικείμενα που εκπέμπει ένα cmdlet και να τα περάσετε ως είσοδο στο επόμενο cmdlet της αγωγού. Το κόλπο είναι να γνωρίζουμε τι είδους αντικείμενο επιστρέφει το cmdlet, το οποίο είναι πολύ εύκολο όταν χρησιμοποιείτε το cmdlet Get-Member.

    Get-Service | Get-μέλος

    Για λόγους που δεν εμπίπτουν στο πεδίο εφαρμογής αυτού του άρθρου, οι ιδιότητες και οι μέθοδοι αποκαλούνται από κοινού τα μέλη κλάσης, πράγμα που εξηγεί γιατί χρησιμοποιείτε το 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-Service επιστρέφει αντικείμενα ServiceController
    • Η υπηρεσία Stop-Service έχει μια παράμετρο που ονομάζεται InputObject και δέχεται έναν ή περισσότερους ServiceControllers ως είσοδο.
    • Η παράμετρος InputObject δέχεται είσοδο αγωγού.

    Χρησιμοποιώντας αυτές τις πληροφορίες μπορούμε να κάνουμε τα εξής:

    Get-Service -Μελέτη "Apple Mobile Device" Διακοπή

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

    Εργασία για το σπίτι

    • Διαβάστε το αγωγό αντικειμένων

    Αν έχετε οποιεσδήποτε ερωτήσεις μπορείτε να μου τιτίβετε @taybgibb, ή απλά αφήστε ένα σχόλιο.