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

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

Εισαγωγή

Το PowerShell είναι το πιο ισχυρό εργαλείο αυτοματοποίησης που έχει να προσφέρει η Microsoft, και είναι ένα κέλυφος και μια γλώσσα δέσμης ενεργειών.

Σημειώστε ότι αυτή η σειρά βασίζεται στο PowerShell 3, το οποίο αποστέλλεται με Windows 8 και Server 2012. Εάν χρησιμοποιείτε Windows 7, κατεβάστε την ενημέρωση PowerShell 3 πριν συνεχίσετε.

Γνωρίστε την Κονσόλα και το ISE

Υπάρχουν δύο τρόποι αλληλεπίδρασης με το PowerShell έξω από το κουτί, η Κονσόλα και το Ενσωματωμένο Περιβάλλον Σενάρια - επίσης γνωστά ως ISE. Το ISE έχει βελτιωθεί σε μεγάλο βαθμό από τη φρικτή έκδοση που συνοδεύει το PowerShell 2 και μπορεί να ανοίξει πατώντας το συνδυασμό πληκτρολογίου Win + R για να εμφανιστεί ένα κουτί εκτέλεσης, στη συνέχεια πληκτρολογώντας το powerhell_ise και πατώντας enter.

εικόνα

Όπως μπορείτε να δείτε το σπορ ISE μια διαχωρισμένη προβολή, ώστε να μπορείτε να κάνετε σενάριο γρήγορα, ενώ εξακολουθείτε να μπορείτε να δείτε το αποτέλεσμα στο κάτω μισό του ISE. Το κάτω μισό του ISE, όπου εκτυπώνονται τα αποτελέσματα του σεναρίου σας, μπορεί επίσης να χρησιμοποιηθεί ως γραμμή εντολών REPL - όπως η γραμμή εντολών. Το v3 ISE πρόσθεσε επιτέλους υποστήριξη για intellisense τόσο στο παράθυρο σεναρίου όσο και στη διαδραστική κονσόλα.

εικόναεικόνα

Εναλλακτικά, μπορείτε να αλληλεπιδράσετε με το PowerShell χρησιμοποιώντας το PowerShell Console, το οποίο θα χρησιμοποιώ για τις περισσότερες από αυτές τις σειρές. Η κονσόλα PowerShell συμπεριφέρεται σαν τη γραμμή εντολών - απλά εισάγετε εντολές και εκτοξεύει τα αποτελέσματα. Για να ανοίξετε την Κονσόλα PowerShell των Windows, πατήστε ξανά το συνδυασμό πληκτρολογίου Win + R για να ανοίξετε ένα πλαίσιο εκτέλεσης και πληκτρολογήστε PowerShell και στη συνέχεια πατήστε Enter.

εικόνα

Προτροπές REPL όπως αυτό είναι φοβερό για άμεση ικανοποίηση: εισάγετε μια εντολή και λαμβάνετε αποτελέσματα. Ενώ η Κονσόλα δεν προσφέρει intellisense, προσφέρει κάτι που ονομάζεται ολοκλήρωση καρτέλας που λειτουργεί σχεδόν το ίδιο - απλώς ξεκινήστε να πληκτρολογείτε μια εντολή και πατήστε το πλήκτρο για να κάνετε κύλιση σε πιθανές αντιστοιχίσεις.

εικόναεικόνα

Χρήση του συστήματος βοήθειας

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

Ενημέρωση-Βοήθεια
εικόναεικόνα

Συγχαρητήρια για την εκτέλεση της πρώτης εντολής PowerShell! Η αλήθεια είναι ότι η εντολή Ενημέρωση-Βοήθεια έχει πολύ περισσότερες επιλογές από την απλή εκτέλεση της, και για να τις δούμε θα θέλουμε να δούμε τη βοήθεια για την εντολή. Για να δείτε τη βοήθεια για μια εντολή, απλώς μεταβιβάστε το όνομα της εντολής με την οποία θέλετε βοήθεια στην παράμετρο Όνομα της εντολής Λήψη βοήθειας, για παράδειγμα:

Get-Help –Name Update-Βοήθεια
εικόνα

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

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

  • Οι αγκύλες γύρω από ένα όνομα παραμέτρου και ο τύπος της σημαίνει ότι είναι μια προαιρετική παράμετρος και η εντολή θα λειτουργήσει μια χαρά χωρίς αυτήν. Οι αγκύλες γύρω από το όνομα των παραμέτρων σημαίνει ότι οι παράμετροι είναι παράμετρος θέσης. Το πράγμα στα δεξιά μιας παραμέτρου στα γωνιακά αγκύλες σας λέει τον τύπο δεδομένων που περιμένει η παράμετρος.

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

Λήψη-Βοήθεια –Ενημέρωση ονόματος-Βοήθεια –Πλήρης
εικόνα

Το τελευταίο πράγμα που πρέπει να γνωρίζετε για το σύστημα βοήθειας είναι πώς μπορείτε να το χρησιμοποιήσετε για να ανακαλύψετε εντολές, πράγμα που είναι πραγματικά πολύ εύκολο. Βλέπετε, το PowerShell δέχεται μπαλαντέρ σχεδόν οπουδήποτε, οπότε η χρήση τους μαζί με την εντολή Get-Help σάς επιτρέπει να ανακαλύπτετε εύκολα εντολές. Για παράδειγμα, αναζητώ εντολές που αφορούν τις υπηρεσίες Windows:

Λήψη-Βοήθεια –Ονομα * υπηρεσία *
εικόνα

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

Ασφάλεια

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

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

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

C: \ runme.ps1

Ή εάν είστε ήδη στη ρίζα της μονάδας δίσκου C, μπορείτε να χρησιμοποιήσετε τα εξής:

. \ runme.ps1

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

  • Περιορισμός: Αυτή είναι η προεπιλεγμένη διαμόρφωση στο PowerShell. Αυτή η ρύθμιση σημαίνει ότι κανένα σενάριο δεν μπορεί να εκτελεστεί, ανεξάρτητα από την υπογραφή του. Το μόνο πράγμα που μπορεί να εκτελεστεί στο PowerShell με αυτήν τη ρύθμιση είναι μια μεμονωμένη εντολή. AllSigned: Αυτή η ρύθμιση επιτρέπει την εκτέλεση σεναρίων στο PowerShell. Το σενάριο πρέπει να έχει μια συσχετισμένη ψηφιακή υπογραφή από έναν αξιόπιστο εκδότη. Θα υπάρξει μια προτροπή προτού εκτελέσετε τα σενάρια από αξιόπιστους εκδότες. RemoteSigned: Αυτή η ρύθμιση επιτρέπει την εκτέλεση σεναρίων, αλλά απαιτεί τα αρχεία δέσμης ενεργειών και διαμόρφωσης που λαμβάνονται από το Διαδίκτυο να έχουν σχετική ψηφιακή υπογραφή από έναν αξιόπιστο εκδότη. Τα σενάρια που εκτελούνται από τον τοπικό υπολογιστή δεν χρειάζεται να υπογραφούν. Δεν υπάρχουν προτροπές πριν από την εκτέλεση του σεναρίου. Χωρίς περιορισμούς: Αυτό επιτρέπει την εκτέλεση μη υπογεγραμμένων σεναρίων, συμπεριλαμβανομένων όλων των σεναρίων και των αρχείων διαμόρφωσης που έχουν ληφθεί από το Διαδίκτυο. Αυτό θα περιλαμβάνει αρχεία από το Outlook και το Messenger. Ο κίνδυνος εδώ είναι η εκτέλεση σεναρίων χωρίς καμία υπογραφή ή ασφάλεια. Ξαναρχίσαμε ότι ποτέ δεν μας είχατε αυτήν τη ρύθμιση.

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

Λήψη-ΕκτέλεσηΠολιτική
εικόνα

Για αυτό το μάθημα και τις περισσότερες άλλες περιπτώσεις, η πολιτική RemoteSigned είναι η καλύτερη, οπότε προχωρήστε και αλλάξτε την πολιτική σας χρησιμοποιώντας τα ακόλουθα.

Σημείωση: Αυτό θα πρέπει να γίνει από μια αυξημένη κονσόλα PowerShell.

Set-ExecutionPolicy RemoteSigned
εικόνα

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

Αποποίηση ευθυνών: Ο κατάλληλος όρος για μια εντολή PowerShell είναι ένα cmdlet και από τώρα και στο εξής θα χρησιμοποιήσουμε αυτήν τη σωστή ορολογία. Ήταν πιο κατάλληλο να τους καλέσω εντολές για αυτήν την εισαγωγή.

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