Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Ιστορικά, τα βοηθητικά προγράμματα γραμμής εντολών στα συστήματα Unix έχουν αναπτυχθεί καλύτερα από ό,τι στα Windows, αλλά με την εμφάνιση μιας νέας λύσης, η κατάσταση έχει αλλάξει.

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

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

Σχόλια
Μεταβλητές και τύποι τους
Μεταβλητές συστήματος
Πεδίο εφαρμογής
Μεταβλητές περιβάλλοντος (περιβάλλον)
Αριθμητική και σύγκριση τελεστών
Χειριστές ανάθεσης
Λογικοί τελεστές
Άλμα υπό όρους
Κύκλοι
Πίνακες
Πίνακες κατακερματισμού
Λειτουργίες
Σφάλμα επεξεργασίας

Μπορείτε να γράψετε κώδικα σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου ή χρησιμοποιώντας ένα ενσωματωμένο περιβάλλον ανάπτυξης - ο ευκολότερος τρόπος είναι να χρησιμοποιήσετε το Windows PowerShell ISE που παρέχεται με λειτουργικά συστήματα διακομιστή Microsoft. Αυτό είναι απαραίτητο μόνο για αρκετά πολύπλοκα σενάρια: σύντομες εντολές είναι πιο εύκολο να εκτελεστούν διαδραστικά.

Σχόλια

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

# Для строчных комментариев используется символ решетки — содержимое строки интерпретатор не обрабатывает.

<# 

       Так обозначаются начало и конец блочного комментария. 
       Заключенный между ними текст интерпретатор игнорирует.

#>

Μεταβλητές και τύποι τους

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

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Για να αρχικοποιήσετε μια μεταβλητή (να εκχωρήσετε μια τιμή σε αυτήν), χρησιμοποιείται ο τελεστής εκχώρησης (σύμβολο =):

$test = 100

Μπορείτε να δηλώσετε μια μεταβλητή προσδιορίζοντας τον τύπο της σε αγκύλες (τύπος τελεστή χύτευσης) πριν από το όνομα ή την τιμή:

[int]$test = 100

$test = [int]100

Είναι σημαντικό να κατανοήσουμε ότι οι μεταβλητές στο PowerShell είναι πλήρη αντικείμενα (κλάσεις) με ιδιότητες και μεθόδους των οποίων οι τύποι βασίζονται σε αυτά του .NET Core. Παραθέτουμε τα κυριότερα:

Τύπος (κατηγορία .NET)

Περιγραφή

Παράδειγμα κώδικα

[string] System.String

Συμβολοσειρά Unicode 

$test = "δοκιμή"
$test = 'δοκιμή'

[χαρ]Σύστημα.Χαρ

Χαρακτήρας Unicode (16 bit)

[char]$test = 'c'

[bool] Σύστημα.Boolean

boolean τύπος (boolean True ή False)

[bool]$test = $true

[int] System.Int32

ακέραιος τριάντα δύο bit (32 bit)

[int]$test = 123456789

[μακρύ] Σύστημα.Int64

ακέραιος εξήντα τέσσερα bit (64 bit)

[long]$test = 12345678910

[single] System.Single

αριθμός κινητής υποδιαστολής μήκους 32 bit

[single]$test = 12345.6789

[διπλό]Σύστημα.Διπλό

αριθμός κινητής υποδιαστολής μήκους 64 bit (8 byte)

[διπλό]$test = 123456789.101112

[δεκαδικός]Σύστημα.Δεκαδικός

Αριθμός κινητής υποδιαστολής 128 bit (απαιτείται να τελειώνει με d)

[δεκαδικός]$test = 12345.6789d

[DateTime]System.DateTime

ημερομηνία και ώρα 

$test = GetDate

[συστοιχία] System.Object[]

ένας πίνακας του οποίου ο δείκτης στοιχείων ξεκινά από το 0

$test_array = 1, 2, "test", 3, 4

[hashtable] System.Collections.Hashtable

Οι πίνακες κατακερματισμού είναι συσχετιστικοί πίνακες με επώνυμα κλειδιά, κατασκευασμένοι σύμφωνα με την αρχή: @{key = "value"}

$test_hashtable = @{one="one"; δύο = "δύο"; τρία "τρία"}

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

$test.GetType().FullName

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Υπάρχει ένας αριθμός cmdlet για το χειρισμό μεταβλητών. Η λίστα τους σε μια βολική μορφή εμφανίζεται χρησιμοποιώντας την εντολή:

Get-Command -Noun Variable | ft -Property Name, Definition -AutoSize -Wrap

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

Get-Variable | more

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

Μεταβλητές συστήματος

Εκτός από αυτές που δηλώνει ο χρήστης, υπάρχουν ενσωματωμένες μεταβλητές (συστήματος) που δεν διαγράφονται μετά το τέλος της τρέχουσας περιόδου λειτουργίας. Χωρίζονται σε δύο τύπους, ενώ τα δεδομένα κατάστασης PowerShell αποθηκεύονται σε αυτόματες μεταβλητές στις οποίες δεν μπορούν να εκχωρηθούν αυθαίρετες τιμές από μόνες τους. Αυτά περιλαμβάνουν, για παράδειγμα, $PWD:

$PWD.Path

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

Εκτός από τους τελεστές και τα cmdlet για την πρόσβαση σε δηλωμένες μεταβλητές, υπάρχει μια Μεταβλητή: ψευδοσυσσωρευτής. Μπορείτε να εργαστείτε μαζί του κατ' αναλογία με άλλες μονάδες δίσκου και οι μεταβλητές σε αυτήν την περίπτωση μοιάζουν με αντικείμενα συστήματος αρχείων:

Get-ChildItem Variable: | more

ή

ls Variable: | more

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Πεδίο εφαρμογής

Για τις μεταβλητές στο PowerShell, υπάρχει η έννοια του πεδίου (Scope). Η ενέργεια του καθολικού εύρους (Global) ισχύει για ολόκληρη την τρέχουσα περίοδο λειτουργίας - περιλαμβάνει, για παράδειγμα, μεταβλητές συστήματος. Οι τοπικές (τοπικές) μεταβλητές είναι διαθέσιμες μόνο στο πεδίο όπου ορίστηκαν: ας πούμε μέσα σε μια συνάρτηση. Υπάρχει επίσης η έννοια του εύρους του σεναρίου (Script), αλλά για εντολές σεναρίου, είναι ουσιαστικά τοπικό. Από προεπιλογή, κατά τη δήλωση μεταβλητών, τους δίνεται ένα τοπικό εύρος και για να το αλλάξετε αυτό, χρειάζεστε μια ειδική κατασκευή όπως: $Global: variable = value.

Για παράδειγμα, όπως αυτό:

$Global:test = 100

Μεταβλητές περιβάλλοντος (περιβάλλον)

Μια άλλη ψευδο-μονάδα, η Env:, είναι διαθέσιμη από το PowerShell και μπορεί να χρησιμοποιηθεί για πρόσβαση σε μεταβλητές περιβάλλοντος. Όταν ξεκινά το κέλυφος, αντιγράφονται από τη γονική διαδικασία (δηλαδή από το πρόγραμμα που ξεκίνησε την τρέχουσα περίοδο λειτουργίας) και συνήθως οι αρχικές τους τιμές είναι ίδιες με τις τιμές στον πίνακα ελέγχου. Για να προβάλετε μεταβλητές περιβάλλοντος, χρησιμοποιήστε το cmdlet Get-ChildItem ή τα ψευδώνυμά του (ψευδώνυμα): ls και dir.

dir Env:

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Αυτές οι μεταβλητές είναι ακολουθίες byte (ή χαρακτήρες, αν θέλετε), η ερμηνεία των οποίων εξαρτάται μόνο από το πρόγραμμα που τις χρησιμοποιεί. Τα *-Variable cmdlet δεν λειτουργούν με μεταβλητές περιβάλλοντος. Για να αποκτήσετε πρόσβαση σε αυτά, πρέπει να χρησιμοποιήσετε το πρόθεμα μονάδας δίσκου:

$env:TEST = "Hello, World!"

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Αριθμητική και σύγκριση τελεστών

Το PowerShell παρέχει τους ακόλουθους αριθμητικούς τελεστές: + (προσθήκη), - (αφαίρεση), * (πολλαπλασιασμός), / (διαίρεση) και % (modulo ή modulo). Το αποτέλεσμα μιας αριθμητικής έκφρασης αξιολογείται από τα αριστερά προς τα δεξιά σύμφωνα με τη γενικά αποδεκτή σειρά πράξεων και χρησιμοποιούνται παρενθέσεις για την ομαδοποίηση τμημάτων της παράστασης. Τα κενά μεταξύ των χειριστών αγνοούνται, χρησιμοποιούνται μόνο για να διευκολύνουν την ανάγνωση. Ο τελεστής + συνενώνεται επίσης και ο τελεστής * επαναλαμβάνει συμβολοσειρές. Εάν προσπαθήσετε να προσθέσετε έναν αριθμό σε μια συμβολοσειρά, θα μετατραπεί σε συμβολοσειρά. Επιπλέον, η γλώσσα PowerShell έχει πολλούς τελεστές σύγκρισης που ελέγχουν για αντιστοίχιση δύο τιμών και επιστρέφουν το boolean True ή False:

Χειριστής

Περιγραφή

Παράδειγμα κώδικα

-εξ

Equal / Equals (παρόμοιο με = ή == σε άλλες γλώσσες)

$test = 100
$test -eq 123 

-ne

Μη ίσο / Μη ίσο (παρόμοιο με <> ή !=)

$test = 100
$test -ne 123   

-gt

Μεγαλύτερο από / Περισσότερα (αναλογικό >)

$test = 100
$test -gt 123

-γε

Μεγαλύτερο ή ίσο / Μεγαλύτερο ή ίσο (παρόμοιο με >=)

$test = 100
$test -ge 123

- λ

Λιγότερο από / Λιγότερο (παρόμοιο με <)

$test = 100
$test -lt 123  

-ο

Λιγότερο ή ίσο / Λιγότερο από ή ίσο (παρόμοιο με <=)

$test = 100
$test -le 123

Υπάρχουν άλλοι παρόμοιοι τελεστές που σας επιτρέπουν, για παράδειγμα, να συγκρίνετε συμβολοσειρές με βάση έναν χαρακτήρα μπαλαντέρ ή να χρησιμοποιείτε κανονικές εκφράσεις για να ταιριάξετε ένα μοτίβο. Θα τα καλύψουμε αναλυτικά σε επόμενα άρθρα. Τα σύμβολα <, > και = δεν χρησιμοποιούνται για σύγκριση γιατί χρησιμοποιούνται για άλλους σκοπούς.

Χειριστές ανάθεσης

Εκτός από τον πιο συνηθισμένο τελεστή =, υπάρχουν και άλλοι τελεστές ανάθεσης: +=, -=, *=, /= και %=. Αλλάζουν την τιμή πριν από την ανάθεση. Οι μοναδικοί τελεστές ++ και -, οι οποίοι αυξάνουν ή μειώνουν την τιμή μιας μεταβλητής, συμπεριφέρονται παρόμοια - ισχύουν και για τους τελεστές εκχώρησης.

Λογικοί τελεστές

Η σύγκριση από μόνη της δεν αρκεί για να περιγράψει περίπλοκες συνθήκες. Μπορείτε να γράψετε οποιεσδήποτε λογικές εκφράσεις χρησιμοποιώντας τους τελεστές: -and, -or, -xor, -not and! .. Λειτουργούν όπως σε άλλες γλώσσες προγραμματισμού, ενώ μπορείτε να χρησιμοποιήσετε παρενθέσεις για να καθορίσετε τη σειρά αξιολόγησης:

("Тест" -eq "Тест") -and (100 -eq 100)

-not (123 -gt 321) 

!(123 -gt 321)

Άλμα υπό όρους

Οι χειριστές υποκαταστημάτων στο PowerShell είναι τυπικοί: IF(IF…ELSE, IF…ELSEIF…ELSE) και SWITCH. Ας δούμε τη χρήση τους με παραδείγματα:

[int]$test = 100
if ($test -eq 100) {
      Write-Host "test = 100"
}



[int]$test = 50
if ($test -eq 100) {
       Write-Host "test = 100"
}
else {
      Write-Host "test <> 100"
}



[int]$test = 10
if ($test -eq 100) {
      Write-Host "test = 100"
}
elseif ($test -gt 100) {
      Write-Host "test > 100"
}
else {
       Write-Host "test < 100"
}



[int]$test = 5
switch ($test) {
     0 {Write-Host "test = 0"}
     1 {Write-Host "test = 1"}
     2 {Write-Host "test = 2"}
     3 {Write-Host "test = 3"}
     4 {Write-Host "test = 4"}
     5 {Write-Host "test = 5"}
     default {Write-Host "test > 5 или значение не определено"}
}

Κύκλοι

Το PowerShell έχει διάφορες ποικιλίες βρόχων: WHILE, DO WHILE, DO UNTIL, FOR και FOREACH.

Ένας βρόχος με μια προϋπόθεση λειτουργεί εάν/εφόσον είναι αληθής:

[int]$test = 0
while ($test -lt 10) {
      Write-Host $test
      $test = $test + 1
}

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

[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
while ($test -lt 10)



[int]$test = 0
do {
      Write-Host $test
      $test = $test + 1 
}
until ($test -gt 9)

Ο αριθμός των επαναλήψεων του βρόχου FOR είναι γνωστός εκ των προτέρων:

for ([int]$test = 0; $test -lt 10; $test++) {
       Write-Host $test
}

Στον βρόχο FOREACH, επαναλαμβάνεται πάνω από τα στοιχεία ενός πίνακα ή μιας συλλογής (πίνακας κατακερματισμού):

$test_collection = "item1", "item2", "item3"
foreach ($item in $test_collection)
{
        Write-Host $item
}

Πίνακες

Οι μεταβλητές PowerShell αποθηκεύουν όχι μόνο μεμονωμένα αντικείμενα (αριθμός, συμβολοσειρά κ.λπ.), αλλά και πολλά. Το απλούστερο είδος τέτοιων μεταβλητών είναι οι πίνακες. Ένας πίνακας μπορεί να αποτελείται από πολλά στοιχεία, ένα στοιχείο ή να είναι κενός, δηλ. δεν περιέχει στοιχεία. Δηλώνεται χρησιμοποιώντας τον τελεστή @(), τον οποίο θα χρειαστούμε στο επόμενο άρθρο - είναι πολύ σημαντικό για την προσθήκη άλλων πινάκων σε έναν πίνακα (δημιουργία πολυδιάστατων πινάκων), τη μεταβίβαση πινάκων σε συναρτήσεις ως όρισμα και παρόμοιες εργασίες:

$test_array = @() #создаем пустой массив

Όταν αρχικοποιείται ένας πίνακας, οι τιμές του παρατίθενται διαχωρισμένες με κόμμα (ειδικός τελεστής ,):

$test_array = @(1, 2, 3, 4) # создаем массив из четырех элементов 

Στις περισσότερες περιπτώσεις, ο τελεστής @() μπορεί να παραλειφθεί:

$test_array = 1, 2, 3, 4

Σε αυτήν την περίπτωση, ένας πίνακας ενός στοιχείου αρχικοποιείται ως εξής

$test_array = , 1

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

$test_array[0] = 1

Μπορείτε να καθορίσετε πολλά ευρετήρια χωρισμένα με κόμμα, συμ. επαναλαμβανόμενα:

$test_array = "один", "два", "три", "четыре"
$test_array[0,1,2,3]
$test_array[1,1,3,3,0]

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Χειριστής .. (δύο κουκκίδες - τελεστής εύρους) επιστρέφει έναν πίνακα ακεραίων εντός των καθορισμένων άνω και κάτω ορίων. Για παράδειγμα, η παράσταση 1..4 εξάγει έναν πίνακα τεσσάρων στοιχείων @(1, 2, 3, 4) και η έκφραση 8..5 εξάγει έναν πίνακα @(8, 7, 6, 5).

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Χρησιμοποιώντας τον τελεστή εύρους, μπορείτε να αρχικοποιήσετε έναν πίνακα ($test_array = 1..4) ή να πάρετε ένα slice (slice), π.χ. μια ακολουθία στοιχείων από έναν πίνακα με δείκτες από έναν άλλο. Σε αυτήν την περίπτωση, ένας αρνητικός αριθμός -1 υποδηλώνει το τελευταίο στοιχείο του πίνακα, -2 - το προτελευταίο και ούτω καθεξής.

$test_array = "один", "два", "три", "четыре"
$test_array[0..2]
$test_array[2..0]
$test_array[-1..0]
$test_array[-2..1]

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

$test_array[0..100]

Εάν προσπαθήσετε να αποκτήσετε πρόσβαση σε ένα μόνο ανύπαρκτο στοιχείο πίνακα, επιστρέφεται το $null.

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

$test_array = 1, 2, "тест", 3, 4
for ([int]$i = 0; $i -lt $test_array.count; $i++)
{
          Write-Host $test_array[$i]
}

Όπου η ιδιότητα $test_array.count είναι ο αριθμός των στοιχείων πίνακα.

Ένα παράδειγμα δημιουργίας ενός πίνακα με έντονα πληκτρολόγηση:

[int[]]$test_array = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Πίνακες κατακερματισμού

Ένας άλλος βασικός τύπος μεταβλητών στη γλώσσα PowerShell είναι οι πίνακες κατακερματισμού, γνωστοί και ως συσχετιστικοί πίνακες. Τα hashtables είναι παρόμοια με τα αντικείμενα JSON και είναι χτισμένα με βάση την τιμή κλειδιού. Σε αντίθεση με τους συνηθισμένους πίνακες, τα στοιχεία τους έχουν πρόσβαση με κλειδιά με όνομα, τα οποία είναι ιδιότητες του αντικειμένου (μπορείτε επίσης να χρησιμοποιήσετε τον τελεστή ευρετηρίου - αγκύλες).

Ένας κενός πίνακας κατακερματισμού δηλώνεται χρησιμοποιώντας τις αγκύλες συμβόλου @ και τελεστή:

$test_hashtable = @{}

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

$test_hashtable = @{one="один"; two="два"; three="три"; "some key"="some value"}

Για να προσθέσετε ένα στοιχείο σε έναν πίνακα κατακερματισμού, πρέπει να αντιστοιχίσετε ένα κλειδί που δεν υπάρχει ακόμη σε αυτόν ή να χρησιμοποιήσετε τη μέθοδο Προσθήκη (). Εάν γίνει αντιστοίχιση σε ένα υπάρχον κλειδί, η τιμή του θα αλλάξει. Η μέθοδος Remove() χρησιμοποιείται για την αφαίρεση ενός στοιχείου από έναν πίνακα κατακερματισμού.

$test_hashtable."some key"
$test_hashtable["some key"]
$test_hashtable.Add("four", "четыре")
$test_hashtable.five = "пять"
$test_hashtable['five'] = "заменяем значение"
$test_hashtable.Remove("one")

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Μεταβλητές αυτού του τύπου μπορούν να περάσουν ως ορίσματα σε συναρτήσεις και cmdlet - στο επόμενο άρθρο θα μελετήσουμε πώς γίνεται αυτό και θα εξετάσουμε επίσης έναν άλλο παρόμοιο τύπο - το PSCustomObject.

Λειτουργίες

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

function имя-функции (аргумент1, ..., аргументN) 
{ 
        тело-функции 
} 

Η συνάρτηση επιστρέφει πάντα ένα αποτέλεσμα - είναι ένας πίνακας των αποτελεσμάτων όλων των δηλώσεών της, εάν υπάρχουν περισσότερες από μία. Εάν υπάρχει μόνο μία πρόταση, επιστρέφεται η μοναδική τιμή του αντίστοιχου τύπου. Η κατασκευή return $value προσθέτει ένα στοιχείο με την τιμή $value στον πίνακα αποτελεσμάτων και ματαιώνει την εκτέλεση της λίστας δηλώσεων και η κενή συνάρτηση επιστρέφει $null.

Για παράδειγμα, ας δημιουργήσουμε μια συνάρτηση για τον τετραγωνισμό ενός αριθμού:

function sqr ($number)
{
      return $number * $number
}

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

sqr 2

ή σαν αυτό:

sqr -number 2

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

function test_func ($n) {}
test_func -eq $null     # функция не вызывалась
(test_func) -eq $null   # результат выражения — $true

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

function func ($arg = value) {
         #тело функции
}

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

Σφάλμα επεξεργασίας

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

try {

        [int]$test = Read-Host "Введите число"
        100 / $test

} catch {

         Write-Warning "Некорректное число"
         Write-Host $_

}

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

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

Τι είναι το Windows PowerShell και με τι τρώγεται; Μέρος 2: Εισαγωγή στη γλώσσα προγραμματισμού

Πηγή: www.habr.com

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