Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Η έξοδος κειμένου των εντολών στο παράθυρο διερμηνέα PowerShell είναι απλώς ένας τρόπος εμφάνισης πληροφοριών σε μορφή κατάλληλη για την ανθρώπινη αντίληψη. Για την ακρίβεια Τετάρτη προσανατολισμένη για εργασία με αντικείμενα: τα cmdlet και οι συναρτήσεις τα λαμβάνουν ως είσοδο και επέστρεψε στην έξοδο, και οι τύποι μεταβλητών που διατίθενται διαδραστικά και σε σενάρια βασίζονται σε κλάσεις .NET. Στο τέταρτο άρθρο της σειράς, θα μελετήσουμε την εργασία με αντικείμενα με περισσότερες λεπτομέρειες.

Πίνακας περιεχομένων:

Αντικείμενα στο PowerShell
Προβολή της δομής των αντικειμένων
Φιλτράρισμα αντικειμένων
Ταξινόμηση αντικειμένων
Επιλογή αντικειμένων και μερών τους
ForEach-Object, Group-Object και Measure-Object
Δημιουργία αντικειμένων .NET και COM (New-Object)
Κλήση στατικών μεθόδων
Πληκτρολογήστε PSCustomObject
Δημιουργώντας τις δικές σας τάξεις

Αντικείμενα στο PowerShell

Ας υπενθυμίσουμε ότι ένα αντικείμενο είναι μια συλλογή από πεδία δεδομένων (ιδιότητες, συμβάντα κ.λπ.) και μεθόδους επεξεργασίας τους (μέθοδοι). Η δομή του καθορίζεται από έναν τύπο, ο οποίος συνήθως βασίζεται σε κλάσεις που χρησιμοποιούνται στην ενοποιημένη πλατφόρμα .NET Core. Είναι επίσης δυνατή η εργασία με αντικείμενα COM, CIM (WMI) και ADSI. Απαιτούνται ιδιότητες και μέθοδοι για την εκτέλεση διαφόρων ενεργειών σε δεδομένα· επιπλέον, στο PowerShell, τα αντικείμενα μπορούν να περάσουν ως ορίσματα σε συναρτήσεις και cmdlet, να εκχωρηθούν οι τιμές τους σε μεταβλητές και υπάρχει επίσης μηχανισμός σύνθεσης εντολών (μεταφορέας ή αγωγός). Κάθε εντολή στη διοχέτευση περνά την έξοδο της στην επόμενη με τη σειρά της, αντικείμενο προς αντικείμενο. Για επεξεργασία, μπορείτε να χρησιμοποιήσετε μεταγλωττισμένα cmdlet ή να δημιουργήσετε τα δικά σας προηγμένα χαρακτηριστικάγια να εκτελέσετε διάφορους χειρισμούς με αντικείμενα στη διοχέτευση: φιλτράρισμα, ταξινόμηση, ομαδοποίηση, ακόμη και αλλαγή της δομής τους. Η μετάδοση δεδομένων σε αυτή τη μορφή έχει ένα σοβαρό πλεονέκτημα: η ομάδα λήψης δεν χρειάζεται να αναλύσει τη ροή byte (κείμενο), όλες οι απαραίτητες πληροφορίες ανακτώνται εύκολα καλώντας τις κατάλληλες ιδιότητες και μεθόδους.

Προβολή της δομής των αντικειμένων

Για παράδειγμα, ας εκτελέσουμε το cmdlet Get-Process, το οποίο σας επιτρέπει να λαμβάνετε πληροφορίες σχετικά με τις διεργασίες που εκτελούνται στο σύστημα:

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Θα εμφανίσει ορισμένα μορφοποιημένα δεδομένα κειμένου που δεν δίνουν καμία ιδέα για τις ιδιότητες των επιστρεφόμενων αντικειμένων και τις μεθόδους τους. Για να τελειοποιήσουμε την έξοδο, πρέπει να μάθουμε πώς να εξετάζουμε τη δομή των αντικειμένων και το cmdlet Get-Member θα μας βοηθήσει σε αυτό:

Get-Process | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Εδώ βλέπουμε ήδη τον τύπο και τη δομή και με τη βοήθεια πρόσθετων παραμέτρων μπορούμε, για παράδειγμα, να εμφανίσουμε μόνο τις ιδιότητες του αντικειμένου που περιλαμβάνεται στην είσοδο:

Get-Process | Get-Member -MemberType Property

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

Φιλτράρισμα αντικειμένων

Το PowerShell επιτρέπει τη διέλευση αντικειμένων που πληρούν μια συγκεκριμένη συνθήκη μέσω ενός αγωγού:

Where-Object { блок сценария }

Το αποτέλεσμα της εκτέλεσης του μπλοκ σεναρίου μέσα στις παρενθέσεις πρέπει να είναι μια δυαδική τιμή. Εάν είναι true ($true), το αντικείμενο που εισάγεται στο Where-Object cmdlet θα μεταβιβαστεί κατά μήκος του pipeline, διαφορετικά ($false) θα διαγραφεί. Για παράδειγμα, ας εμφανιστεί μια λίστα με τις υπηρεσίες Windows Server που έχουν σταματήσει, π.χ. εκείνοι των οποίων η ιδιότητα Κατάσταση έχει οριστεί σε "Διακοπή":

Get-Service | Where-Object {$_.Status -eq "Stopped"}

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Εδώ πάλι βλέπουμε μια αναπαράσταση κειμένου, αλλά αν θέλετε να κατανοήσετε τον τύπο και την εσωτερική δομή των αντικειμένων που περνούν από τον αγωγό, δεν είναι δύσκολο:

Get-Service | Where-Object {$_.Status -eq "Stopped"} | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Ταξινόμηση αντικειμένων

Κατά την επεξεργασία αντικειμένων με αγωγό, συχνά υπάρχει ανάγκη ταξινόμησης τους. Στο cmdlet Sort-Object μεταβιβάζονται τα ονόματα των ιδιοτήτων (κλειδιά ταξινόμησης) και επιστρέφει αντικείμενα ταξινομημένα με βάση τις τιμές τους. Είναι εύκολο να ταξινομήσετε την έξοδο των διεργασιών που εκτελούνται με βάση τον χρόνο που δαπανάται CPU (ιδιότητα cpu):

Get-Process | Sort-Object –Property cpu

Η παράμετρος -Ιδιότητα μπορεί να παραλειφθεί κατά την κλήση του cmdlet Sort-Object· χρησιμοποιείται από προεπιλογή. Για αντίστροφη ταξινόμηση, χρησιμοποιήστε την παράμετρο -Φθίνουσα:

Get-Process | Sort-Object cpu -Descending

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Επιλογή αντικειμένων και μερών τους

Το cmdlet Select-Object σάς επιτρέπει να επιλέξετε έναν συγκεκριμένο αριθμό αντικειμένων στην αρχή ή στο τέλος ενός αγωγού χρησιμοποιώντας τις παραμέτρους -First ή -Last. Με τη βοήθειά του, μπορείτε να επιλέξετε μεμονωμένα αντικείμενα ή ορισμένες ιδιότητες, καθώς και να δημιουργήσετε νέα αντικείμενα με βάση αυτά. Ας δούμε πώς λειτουργεί το cmdlet χρησιμοποιώντας απλά παραδείγματα.

Η ακόλουθη εντολή εμφανίζει πληροφορίες σχετικά με τις 10 διεργασίες που καταναλώνουν τη μέγιστη ποσότητα μνήμης RAM (ιδιότητα WS):

Get-Process | Sort-Object WS -Descending | Select-Object -First 10

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Μπορείτε να επιλέξετε μόνο ορισμένες ιδιότητες των αντικειμένων που διέρχονται από τη διοχέτευση και να δημιουργήσετε νέες με βάση αυτές:

Get-Process | Select-Object ProcessName, Id -First 1

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

Get-Process | Select-Object ProcessName, Id -First 1 | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Σημειώστε ότι το Select-Object επιστρέφει ένα μεμονωμένο αντικείμενο (-First 1) που έχει μόνο δύο από τα πεδία που καθορίσαμε: οι τιμές τους αντιγράφηκαν από το πρώτο αντικείμενο που μεταβιβάστηκε στη διοχέτευση από το cmdlet Get-Process. Ένας από τους τρόπους δημιουργίας αντικειμένων σε σενάρια PowerShell βασίζεται στη χρήση Select-Object:

$obj = Get-Process | Select-Object ProcessName, Id -First 1
$obj.GetType()

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Χρησιμοποιώντας το Select-Object, μπορείτε να προσθέσετε υπολογισμένες ιδιότητες σε αντικείμενα που πρέπει να αναπαρασταθούν ως πίνακες κατακερματισμού. Σε αυτήν την περίπτωση, η τιμή του πρώτου κλειδιού του αντιστοιχεί στο όνομα της ιδιότητας και η τιμή του δεύτερου κλειδιού αντιστοιχεί στην τιμή ιδιότητας για το τρέχον στοιχείο του αγωγού:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}}

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Ας δούμε τη δομή των αντικειμένων που διέρχονται από τον μεταφορέα:

Get-Process | Select-Object -Property ProcessName, @{Name="StartTime"; Expression = {$_.StartTime.Minute}} | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

ForEach-Object, Group-Object και Measure-Object

Υπάρχουν και άλλα cmdlet για εργασία με αντικείμενα. Για παράδειγμα, ας μιλήσουμε για τα τρία πιο χρήσιμα:

Για κάθε αντικείμενο σας επιτρέπει να εκτελέσετε τον κώδικα PowerShell για κάθε αντικείμενο στη διοχέτευση:

ForEach-Object { блок сценария }

Ομάδα-Αντικείμενο ομαδοποιεί αντικείμενα κατά αξία ιδιότητας:

Group-Object PropertyName

Εάν το εκτελέσετε με την παράμετρο -NoElement, μπορείτε να μάθετε τον αριθμό των στοιχείων στις ομάδες.

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

Measure-Object -Property PropertyName -Minimum -Maximum -Average -Sum

Συνήθως, τα cmdlet που συζητήθηκαν χρησιμοποιούνται διαδραστικά και συχνά δημιουργούνται σε σενάρια. λειτουργίες με μπλοκ Αρχή, Διεργασία και Τέλος.

Δημιουργία αντικειμένων .NET και COM (New-Object)

Υπάρχουν πολλά στοιχεία λογισμικού με διεπαφές .NET Core και COM που είναι χρήσιμα για τους διαχειριστές συστήματος. Χρησιμοποιώντας την κλάση System.Diagnostics.EventLog, μπορείτε να διαχειριστείτε αρχεία καταγραφής συστήματος απευθείας από το Windows PowerShell. Ας δούμε ένα παράδειγμα δημιουργίας μιας παρουσίας αυτής της κλάσης χρησιμοποιώντας το cmdlet New-Object με την παράμετρο -TypeName:

New-Object -TypeName System.Diagnostics.EventLog

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Εφόσον δεν καθορίσαμε ένα συγκεκριμένο αρχείο καταγραφής συμβάντων, η προκύπτουσα παρουσία της κλάσης δεν περιέχει δεδομένα. Για να το αλλάξετε αυτό, πρέπει να καλέσετε μια ειδική μέθοδο κατασκευής κατά τη δημιουργία της χρησιμοποιώντας την παράμετρο -ArgumentList. Εάν θέλουμε να αποκτήσουμε πρόσβαση στο αρχείο καταγραφής της εφαρμογής, θα πρέπει να περάσουμε τη συμβολοσειρά "Application" ως όρισμα στον κατασκευαστή:

$AppLog = New-Object -TypeName System.Diagnostics.EventLog -ArgumentList Application
$AppLog

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Λάβετε υπόψη ότι αποθηκεύσαμε την έξοδο της εντολής στη μεταβλητή $AppLog. Αν και οι αγωγοί χρησιμοποιούνται συνήθως σε διαδραστική λειτουργία, η σύνταξη σεναρίων απαιτεί συχνά τη διατήρηση μιας αναφοράς σε ένα αντικείμενο. Επιπλέον, οι κλάσεις πυρήνα .NET Core περιέχονται στον χώρο ονομάτων του συστήματος: Το PowerShell από προεπιλογή αναζητά συγκεκριμένους τύπους σε αυτό, επομένως η εγγραφή Diagnostics.EventLog αντί για System.Diagnostics.EventLog είναι πολύ σωστή.

Για να εργαστείτε με το αρχείο καταγραφής, μπορείτε να χρησιμοποιήσετε τις κατάλληλες μεθόδους:

$AppLog | Get-Member -MemberType Method

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Ας υποθέσουμε ότι διαγράφεται με τη μέθοδο Clear() εάν υπάρχουν δικαιώματα πρόσβασης:

$AppLog.Clear()

Το cmdlet New-Object χρησιμοποιείται επίσης για εργασία με στοιχεία COM. Υπάρχουν πολλά από αυτά - από τις βιβλιοθήκες που παρέχονται με τον διακομιστή script των Windows έως τις εφαρμογές ActiveX, όπως ο Internet Explorer. Για να δημιουργήσετε ένα αντικείμενο COM, πρέπει να ορίσετε την παράμετρο -ComObject με το προγραμματιστικό ProgId της επιθυμητής κλάσης:

New-Object -ComObject WScript.Shell
New-Object -ComObject WScript.Network
New-Object -ComObject Scripting.Dictionary
New-Object -ComObject Scripting.FileSystemObject

Για να δημιουργήσετε τα δικά σας αντικείμενα με αυθαίρετη δομή, η χρήση του New-Object φαίνεται πολύ αρχαϊκή και δυσκίνητη· αυτό το cmdlet χρησιμοποιείται για εργασία με στοιχεία λογισμικού εκτός του PowerShell. Σε επόμενα άρθρα αυτό το θέμα θα συζητηθεί με περισσότερες λεπτομέρειες. Εκτός από τα αντικείμενα .NET και COM, θα εξερευνήσουμε επίσης αντικείμενα CIM (WMI) και ADSI.

Κλήση στατικών μεθόδων

Ορισμένες κλάσεις .NET Core δεν μπορούν να δημιουργηθούν, συμπεριλαμβανομένων των System.Environment και System.Math. Αυτοί είναι στατικός και περιέχουν μόνο στατικές ιδιότητες και μεθόδους. Πρόκειται ουσιαστικά για βιβλιοθήκες αναφοράς που χρησιμοποιούνται χωρίς τη δημιουργία αντικειμένων. Μπορείτε να ανατρέξετε σε μια στατική κλάση μέσω ενός κυριολεκτικού κλείνοντας το όνομα του τύπου σε αγκύλες. Ωστόσο, αν δούμε τη δομή του αντικειμένου χρησιμοποιώντας το Get-Member, θα δούμε τον τύπο System.RuntimeType αντί για System.Environment:

[System.Environment] | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Για να προβάλετε μόνο στατικά μέλη, καλέστε το Get-Member με την παράμετρο -Static (σημειώστε τον τύπο αντικειμένου):

[System.Environment] | Get-Member -Static

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Για να αποκτήσετε πρόσβαση στις στατικές ιδιότητες και μεθόδους, χρησιμοποιήστε δύο διαδοχικές άνω και κάτω τελείες αντί για τελεία μετά την κυριολεξία:

[System.Environment]::OSVersion

Ή

$test=[System.Math]::Sqrt(25) 
$test
$test.GetType()

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Πληκτρολογήστε PSCustomObject

Μεταξύ των πολυάριθμων τύπων δεδομένων που διατίθενται στο PowerShell, αξίζει να αναφέρουμε το PSCustomObject, σχεδιασμένο για την αποθήκευση αντικειμένων με αυθαίρετη δομή. Η δημιουργία ενός τέτοιου αντικειμένου χρησιμοποιώντας το cmdlet New-Object θεωρείται ένας κλασικός, αλλά δυσκίνητος και ξεπερασμένος τρόπος:

$object = New-Object  –TypeName PSCustomObject -Property @{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'}

Ας δούμε τη δομή του αντικειμένου:

$object | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Ξεκινώντας με το PowerShell 3.0, είναι διαθέσιμη μια άλλη σύνταξη:

$object = [PSCustomObject]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

Μπορείτε να αποκτήσετε πρόσβαση στα δεδομένα με έναν από τους ισοδύναμους τρόπους:

$object.Name

$object.'Name'

$value = 'Name'
$object.$value

Ακολουθεί ένα παράδειγμα μετατροπής ενός υπάρχοντος hashtable σε αντικείμενο:

$hash = @{'Name'='Ivan Danko'; 'City'='Moscow'; 'Country'='Russia'}
$hash.GetType()
$object = [pscustomobject]$hash
$object.GetType()

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Ένα από τα μειονεκτήματα των αντικειμένων αυτού του τύπου είναι ότι η σειρά των ιδιοτήτων τους μπορεί να αλλάξει. Για να αποφύγετε αυτό, πρέπει να χρησιμοποιήσετε το χαρακτηριστικό [ordered]:

$object = [PSCustomObject][ordered]@{Name = 'Ivan Danko'; 
                                          City = 'Moscow';
                                          Country = 'Russia'
}

Υπάρχουν και άλλες επιλογές για τη δημιουργία ενός αντικειμένου: παραπάνω εξετάσαμε τη χρήση του cmdlet Επιλέξτε-Αντικείμενο. Το μόνο που μένει είναι να καταλάβουμε την προσθήκη και την αφαίρεση στοιχείων. Αυτό για το αντικείμενο από το προηγούμενο παράδειγμα είναι αρκετά απλό:

$object | Add-Member –MemberType NoteProperty –Name Age  –Value 33
$object | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Το cmdlet Add-Member σάς επιτρέπει να προσθέσετε όχι μόνο ιδιότητες, αλλά και μεθόδους σε ένα $object που δημιουργήθηκε προηγουμένως χρησιμοποιώντας την κατασκευή "-MemberType ScriptMethod":

$ScriptBlock = {
    # код 
}
$object | Add-Member -Name "MyMethod" -MemberType ScriptMethod -Value $ScriptBlock
$object | Get-Member

Λάβετε υπόψη ότι χρησιμοποιήσαμε τη μεταβλητή $ScriptBlock τύπου ScriptBlock για να αποθηκεύσουμε τον κώδικα για τη νέα μέθοδο.

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Για να αφαιρέσετε ιδιότητες, χρησιμοποιήστε την αντίστοιχη μέθοδο:

$object.psobject.properties.remove('Name')

Δημιουργώντας τις δικές σας τάξεις

Το PowerShell 5.0 εισήγαγε τη δυνατότητα ορισμού βαθμούς χρησιμοποιώντας συντακτικό χαρακτηριστικό των αντικειμενοστρεφών γλωσσών προγραμματισμού. Η λέξη υπηρεσίας Class προορίζεται για αυτό, μετά την οποία θα πρέπει να καθορίσετε το όνομα της κλάσης και να περιγράψετε το σώμα της σε αγκύλες χειριστή:

class MyClass
{
    # тело класса
}

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

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
}

Για να δημιουργήσετε ένα αντικείμενο (στιγμιότυπο κλάσης), χρησιμοποιήστε το cmdlet Νέο-Αντικείμενο, ή ένα κυριολεκτικό του τύπου [MyClass] και ψευδοστατική μέθοδος νέο (προεπιλεγμένος κατασκευαστής):

$object = New-Object -TypeName MyClass

ή

$object = [MyClass]::new()

Ας αναλύσουμε τη δομή του αντικειμένου:

$object | Get-Member

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Μην ξεχνάτε το εύρος: δεν μπορείτε να αναφέρετε ένα όνομα τύπου ως συμβολοσειρά ή να χρησιμοποιήσετε έναν τύπο κυριολεκτικά έξω από το σενάριο ή την ενότητα στην οποία ορίζεται η κλάση. Σε αυτήν την περίπτωση, οι συναρτήσεις μπορούν να επιστρέψουν στιγμιότυπα κλάσης (αντικείμενα) που θα είναι προσβάσιμα εκτός της λειτουργικής μονάδας ή του σεναρίου.

Αφού δημιουργήσετε το αντικείμενο, συμπληρώστε τις ιδιότητές του:

$object.Name = 'Ivan Danko'
$object.City = 'Moscow'
$object.Country = 'Russia'
$object

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

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

class Example
{
     [string]$Name = 'John Doe'
}

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

class MyClass 
{
     [string]$Name
     [string]$City
     [string]$Country
     
     #описание метода
     Smile([bool]$param1)
     {
         If($param1) {
            Write-Host ':)'
         }
     }
}

Τώρα ο εκπρόσωπος της τάξης μας μπορεί να χαμογελάσει:

$object = [MyClass]::new()
$object.Smile($true)

Οι μέθοδοι μπορούν να υπερφορτωθούν· επιπλέον, μια τάξη έχει στατικές ιδιότητες και μεθόδους, καθώς και κατασκευαστές των οποίων τα ονόματα συμπίπτουν με το όνομα της ίδιας της κλάσης. Μια κλάση που ορίζεται σε ένα σενάριο ή μια μονάδα PowerShell μπορεί να χρησιμεύσει ως βάση για μια άλλη - αυτός είναι ο τρόπος με τον οποίο υλοποιείται η κληρονομικότητα. Σε αυτήν την περίπτωση, επιτρέπεται η χρήση υπαρχουσών κλάσεων .NET ως βασικές:

class MyClass2 : MyClass
{
      #тело нового класса, базовым для которого является MyClass
}
[MyClass2]::new().Smile($true)

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

Μέρος 1: Βασικές δυνατότητες του Windows PowerShell
Μέρος 2: Εισαγωγή στη Γλώσσα Προγραμματισμού Windows PowerShell
Μέρος 3: μεταβίβαση παραμέτρων σε σενάρια και συναρτήσεις, δημιουργία cmdlet

Τι είναι το Windows PowerShell και σε τι χρησιμοποιείται; Μέρος 4: Εργασία με αντικείμενα, δικές σας τάξεις

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο