Τι είναι οι αυτόματες μεταβλητές στο PowerShell

Ti Einai Oi Automates Metabletes Sto Powershell



PowerShell's ' Αυτόματες Μεταβλητές » είναι απαραίτητες για τις δραστηριότητες διαχείρισης συστήματος, αυτοματισμού και δέσμης ενεργειών. Αυτές οι μεταβλητές είναι ενσωματωμένες από το χρόνο εκτέλεσης του PowerShell και χρησιμεύουν ως σύμβολα κράτησης θέσης για την αποθήκευση και αναφορά συγκεκριμένων πληροφοριών κατά την εκτέλεση ενός σεναρίου ή μιας εντολής. Η κατανόηση και η αποτελεσματική χρήση αυτών των αυτόματων μεταβλητών μπορεί να βελτιώσει σημαντικά την αποτελεσματικότητα και τη λειτουργικότητα των σεναρίων PowerShell.

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







Τι είναι οι αυτόματες μεταβλητές στο PowerShell;

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



Το PowerShell προσφέρει πολλές 'Αυτόματες Μεταβλητές' και καθεμία από αυτές εξυπηρετεί έναν ξεχωριστό σκοπό στην εκτέλεση σεναρίου. Αυτές οι μεταβλητές είναι οι εξής:



1. $PSVersionTable

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





Οι ακόλουθες ιδιότητες σχετίζονται με αυτήν τη μεταβλητή:

PSVersion: Επιστρέφει τον αριθμό έκδοσης PowerShell.



PSEdition: Για το PowerShell 4 και παλαιότερες εκδόσεις, καθώς και για το PowerShell 5.1 σε εκδόσεις των Windows με πλήρεις δυνατότητες, αυτή η ιδιότητα έχει την τιμή 'Desktop'. Αυτό το χαρακτηριστικό έχει την τιμή του Core για το PowerShell 6 και νεότερες εκδόσεις, καθώς και του Windows PowerShell 5.1 για εκδόσεις χαμηλού αποτυπώματος όπως ο Windows Nano Server ή το Windows IoT.

GitCommitId: Ανακτά το αναγνωριστικό δέσμευσης GitHub των αρχείων πηγής.

ΕΣΕΙΣ: Καταγράφει πληροφορίες σχετικά με το σύστημα υπολογιστή που χρησιμοποιεί το PowerShell.

Πλατφόρμα: Επιστρέφει την πλατφόρμα υποστήριξης του λειτουργικού συστήματος. Το Unix έχει αξία στο Linux και στο macOS. Ρίξτε μια ματιά στα $IsMacOs και $IsLinux.

Εκδόσεις PSCompatible: Επιστρέφονται οι εκδόσεις PowerShell που είναι συμβατές με την τρέχουσα έκδοση.

Έκδοση PSRemotingProtocol: Επιστρέφει τον αριθμό έκδοσης για το πρωτόκολλο απομακρυσμένης διαχείρισης PowerShell.

Έκδοση Serialization: Επιστρέφει την έκδοση της μεθόδου σειριοποίησης.

WSManStackVersion: Επιστρέφει τον αριθμό έκδοσης της στοίβας WS-Management.

$ Πίνακας PSVersion

2. $Args

Μια άλλη βασική αυτόματη μεταβλητή στο PowerShell είναι ' $Args ”, το οποίο περιέχει μια σειρά από ορίσματα γραμμής εντολών που μεταβιβάζονται σε ένα σενάριο ή μια συνάρτηση. Αυτή η μεταβλητή εξουσιοδοτεί τους προγραμματιστές να επεξεργάζονται και να χειρίζονται τα παρεχόμενα ορίσματα δυναμικά μέσα στα σενάρια τους.

Κατά τον ορισμό μιας συνάρτησης, μπορείτε είτε να χρησιμοποιήσετε τη λέξη-κλειδί 'param' για να δηλώσετε τις παραμέτρους ή μπορείτε να προσθέσετε μια λίστα παραμέτρων διαχωρισμένη με κόμματα σε παρένθεση ακολουθώντας το όνομα της συνάρτησης. Η μεταβλητή '$Args' μιας ενέργειας συμβάντος αποθηκεύει αντικείμενα που χρησιμεύουν ως σύμβολα κράτησης θέσης για τις παραμέτρους συμβάντος του συμβάντος που χειρίζεται:

για κάθε ( $arg σε $Args ) {
Write-Host $arg
}

3. $MyInvocation

Ο ' $MyInvocation Η μεταβλητή δίνει σημαντικά δεδομένα παρασκηνίου σχετικά με το σενάριο ή τη διαδικασία που εκτελείται αυτήν τη στιγμή. Προσφέρει ιδιότητες όπως το όνομα του σεναρίου, τον αριθμό γραμμής του σεναρίου και εάν το σενάριο εκτελείται διαδραστικά ή μη. Αυτές οι ιδιότητες βοηθούν τους προγραμματιστές σεναρίων να εφαρμόσουν τη λογική διακλάδωσης, να ορίσουν μηχανισμούς χειρισμού σφαλμάτων ή να δημιουργήσουν ουσιαστική καταγραφή και αναφορά:

$ MyInvocation

4. $Σφάλμα

Μια λιγότερο γνωστή αυτόματη μεταβλητή ' $Σφάλμα ”, καταγράφει αποτελεσματικά τυχόν μηνύματα σφάλματος ή εξαιρέσεις που προκύπτουν κατά την εκτέλεση του σεναρίου. Μπορείτε να προσπελάσετε το '$Error' για να ανακτήσετε συγκεκριμένες λεπτομέρειες σφάλματος, όπως μηνύματα εξαίρεσης, ίχνη στοίβας ή κωδικούς σφάλματος, επιτρέποντας λεπτομερή ανάλυση και εντοπισμό σφαλμάτων.

Το πιο πρόσφατο σφάλμα αντιπροσωπεύεται από το πρώτο αντικείμενο σφάλματος στον πίνακα ' $Σφάλμα[0] '. Μπορείτε να χρησιμοποιήσετε την κοινή επιλογή ErrorAction με την τιμή 'Ignore' για να σταματήσετε την προσθήκη των σφαλμάτων στον πίνακα '$Error'.

Ας υποθέσουμε ότι πληκτρολογήσαμε μια ακριβή εντολή:

ip [ onfig

Τώρα, αν εισάγουμε το cmdlet '$Error':

$ Λάθος

5. $PSCmdlet

Όταν εργάζεστε με μονάδες PowerShell, η αυτόματη μεταβλητή ' $PSCmdlet ” τίθεται σε ισχύ. Αυτή η μεταβλητή παρέχει πρόσβαση στην τρέχουσα παρουσία του cmdlet ή της συνάρτησης που καλείται, διευκολύνοντας την άμεση αλληλεπίδραση με τις ιδιότητες και τις μεθόδους του.

Χρησιμοποιώντας το '$PSCmdlet', οι προηγμένοι προγραμματιστές σεναρίων μπορούν να ρυθμίσουν και να βελτιώσουν τη συμπεριφορά των μονάδων επεκτείνοντας ή τροποποιώντας τις ενσωματωμένες λειτουργίες. Μπορείτε να χρησιμοποιήσετε τα χαρακτηριστικά και τις μεθόδους του αντικειμένου στο cmdlet ή στον κώδικα συνάρτησής σας ως απόκριση στα κριτήρια χρήσης:

λειτουργία typeof-psCmdlet {
[ cmdletBinding ( ) ] παραμ ( )
ηχώ 'τύπος ' $psCmdlet είναι $($psCmdlet.GetType() .Πλήρες όνομα)'
}

typeof-psCmdlet

Εκτός από τις προαναφερθείσες μεταβλητές, το PowerShell περιλαμβάνει αυτόματες μεταβλητές όπως $HOME, $PROFILE, $PWD και πολλές άλλες, οι οποίες εξυπηρετούν διαφορετικούς σκοπούς, όπως πρόσβαση σε δεδομένα εισόδου, παρακολούθηση σφαλμάτων, ανάκτηση πληροφοριών περιβάλλοντος, διαχείριση παραμέτρων και πολλά άλλα. Αυτές οι μεταβλητές παρατίθενται παρακάτω:

Αυτόματες Μεταβλητές Περιγραφή
$$ Διατηρεί το τελευταίο διακριτικό στην προηγούμενη γραμμή που ελήφθη από την περίοδο λειτουργίας PowerShell.
$; Αποθηκεύει την κατάσταση εκτέλεσης της τελευταίας εντολής.
$^ Περιέχει το πρώτο διακριτικό της τελευταίας γραμμής που έλαβε η συνεδρία.
$_ Αντιπροσωπεύει το τρέχον αντικείμενο στον αγωγό.
$ConsoleFileName Περιέχει τη διαδρομή του αρχείου της κονσόλας (.psc1) που χρησιμοποιήθηκε πιο πρόσφατα στην περίοδο λειτουργίας.
$EnabledExperimentalFeatures Περιέχει μια λίστα με τις ενεργοποιημένες πειραματικές λειτουργίες.
$Event Περιέχει ένα αντικείμενο 'PSEventArgs' που αντιπροσωπεύει το συμβάν που υποβάλλεται σε επεξεργασία.
$EventArgs Περιέχει το πρώτο όρισμα συμβάντος του υπό επεξεργασία συμβάντος.
$EventSubscriber Αντιπροσωπεύει τον συνδρομητή του συμβάντος του συμβάντος που υποβάλλεται σε επεξεργασία.
$ExecutionContext Αντιπροσωπεύει το περιβάλλον εκτέλεσης του κεντρικού υπολογιστή PowerShell.
$ψεύτικο Αντιπροσωπεύει τη Boolean τιμή 'False'.
$foreach Περιέχει τον απαριθμητή ενός βρόχου 'for-Each'.
$HOME Περιέχει την πλήρη διαδρομή του αρχικού καταλόγου του χρήστη.
$Host Αντιπροσωπεύει την τρέχουσα εφαρμογή κεντρικού υπολογιστή για το PowerShell.
$εισαγωγή Λειτουργεί ως απαριθμητής για όλες τις εισόδους που μεταβιβάζονται σε μια συνάρτηση ή σενάριο.
$IsCoreCLR Υποδεικνύει εάν η περίοδος λειτουργίας εκτελείται στο .NET Core Runtime (CoreCLR).
$IsLinux Υποδεικνύει εάν η περίοδος λειτουργίας εκτελείται σε λειτουργικό σύστημα Linux.
$IsMacOS Υποδεικνύει εάν η περίοδος λειτουργίας εκτελείται σε λειτουργικό σύστημα MacOS.
$IsWindows Προσδιορίζει εάν η περίοδος λειτουργίας εκτελείται σε λειτουργικό σύστημα Windows.
$LASTEXITCODE Αποθηκεύει τον κωδικό εξόδου του τελευταίου εγγενούς προγράμματος ή της δέσμης ενεργειών PowerShell.
$Matches Περιέχει αντιστοιχισμένες συμβολοσειρές από τους τελεστές '-match' και '-notmatch'.
$NestedPromptLevel Παρακολουθεί το τρέχον επίπεδο προτροπής σε ένθετες εντολές ή σενάρια εντοπισμού σφαλμάτων.
$null Αντιπροσωπεύει μια μηδενική ή κενή τιμή.
$PID Περιέχει το αναγνωριστικό διεργασίας (PID) της περιόδου λειτουργίας PowerShell.
$ΠΡΟΦΙΛ Περιέχει την πλήρη διαδρομή του προφίλ PowerShell για τον τρέχοντα χρήστη και την εφαρμογή κεντρικού υπολογιστή.
$PSBoundParameters Διατηρεί ένα λεξικό παραμέτρων που μεταβιβάζονται σε ένα σενάριο ή συνάρτηση και τις τιμές τους.
$PSCommandPath Περιέχει την πλήρη διαδρομή και το όνομα αρχείου του σεναρίου που εκτελείται.
$PSCulture Αντικατοπτρίζει την κουλτούρα του τρέχοντος χώρου εκτέλεσης του PowerShell.
$PSEdition Περιέχει τις πληροφορίες έκδοσης PowerShell.
$PSHOME Περιέχει την πλήρη διαδρομή του καταλόγου εγκατάστασης του PowerShell.
$PSItem Ίδιο με το $_, αντιπροσωπεύει το τρέχον αντικείμενο στον αγωγό.
$PSScriptRoot Περιέχει την πλήρη διαδρομή του γονικού καταλόγου του σεναρίου εκτέλεσης.
$PSSenderInfo Περιέχει πληροφορίες σχετικά με τον χρήστη που ξεκίνησε την PSSession.
$PSUICculture Αντικατοπτρίζει την κουλτούρα της διεπαφής χρήστη (UI) που έχει διαμορφωθεί στο λειτουργικό σύστημα.
$PWD Αντιπροσωπεύει τον τρέχοντα κατάλογο εργασίας της περιόδου λειτουργίας PowerShell.
$Αποστολέας Περιέχει το αντικείμενο που δημιούργησε ένα συμβάν.
$ShellId Περιέχει το αναγνωριστικό του τρέχοντος κελύφους.
$StackTrace Αποθηκεύει το ίχνος στοίβας για το πιο πρόσφατο σφάλμα.
$διακόπτης Περιέχει τον απαριθμητή της δήλωσης 'Switch'.
$αυτό Αναφέρεται στην παρουσία μιας κλάσης σε μπλοκ σεναρίων που επεκτείνουν τις κλάσεις.
$αλήθεια Αντιπροσωπεύει τη Boolean τιμή 'True'.

Όλες οι 'αυτόματες μεταβλητές' στο PowerShell μπορούν να βρεθούν εκτελώντας την παρακάτω εντολή:

Get-Variable

συμπέρασμα

' Αυτόματες Μεταβλητές αποτελούν τη ραχοκοκαλιά της δέσμης ενεργειών PowerShell, επιτρέποντας στους προγραμματιστές να λαμβάνουν πληροφορίες σχετικά με το σύστημα, ορίσματα γραμμής εντολών, περιβάλλον εκτέλεσης σεναρίου και πολλά άλλα. Αξιοποιώντας αυτόματες μεταβλητές όπως '$PSVersionTable', '$Args', '$MyInvocation', '$Error' και άλλες, οι προγραμματιστές σεναρίων PowerShell μπορούν να δημιουργήσουν βελτιστοποιημένες πρακτικές διαχείρισης συστήματος.