15Jul
Σε αυτή την έκδοση του Geek School, θα σας βοηθήσουμε να κατανοήσετε τη δυναμική γλώσσα scripting PowerShell που είναι ενσωματωμένη στα Windows και είναι εξαιρετικά χρήσιμη να γνωρίζετε σε ένα περιβάλλον πληροφορικής.
Ενώ αυτή η σειρά δεν είναι δομημένη γύρω από μια εξέταση, η εκμάθηση του PowerShell είναι ένα από τα πιο σημαντικά πράγματα που μπορείτε να κάνετε ως διαχειριστής δικτύου, οπότε αν υπάρχει ένα πράγμα που θέλετε να μάθετε για να βοηθήσετε την καριέρα σας στο IT, αυτό είναι αυτό.Επιπλέον, είναι πολύ διασκεδαστικό.
Εισαγωγή
Το PowerShell είναι το πιο ισχυρό εργαλείο αυτοματισμού που η Microsoft έχει να προσφέρει, και το κέλυφος και η γλώσσα συγγραφής.
Σημειώστε ότι αυτή η σειρά βασίζεται στο PowerShell 3, το οποίο κυκλοφορεί με τα Windows 8 και το Server 2012. Εάν εκτελείτε τα Windows 7 παρακαλώ κατεβάστε την ενημέρωση PowerShell 3 προτού συνεχίσετε.
Γνωρίστε την Κονσόλα και το ISE
Υπάρχουν δύο τρόποι αλληλεπίδρασης με το PowerShell από το κιβώτιο, την Κονσόλα και το Ολοκληρωμένο περιβάλλον συγγραφής - επίσης γνωστό ως ISE.Το ISE βελτιώθηκε σημαντικά από την αποτρόπαια έκδοση που διατέθηκε με το PowerShell 2 και μπορεί να ανοιχτεί πατώντας το συνδυασμό πληκτρολογίου Win + R για να εμφανιστεί ένα πλαίσιο εκτέλεσης, πληκτρολογώντας τα powershell_ise και πατώντας το enter.
Όπως βλέπετε, το ISE έχει ανοιχτή προβολή για να μπορείτε να γράφετε γρήγορα, ενώ μπορείτε να δείτε το αποτέλεσμα στο κάτω μισό του ISE.Το κάτω μισό του ISE, όπου εκτυπώνονται τα αποτελέσματα της δέσμης ενεργειών σας, μπορεί επίσης να χρησιμοποιηθεί ως μια εντολή REPL - σαν τη γραμμή εντολών.Το v3 ISE προσέφερε τελικά υποστήριξη για intellisense τόσο στο παράθυρο του script όσο και στην διαδραστική κονσόλα.
Εναλλακτικά, μπορείτε να αλληλεπιδράσετε με το PowerShell χρησιμοποιώντας την κονσόλα PowerShell, την οποία θα χρησιμοποιήσω για το μεγαλύτερο μέρος αυτής της σειράς.Η κονσόλα PowerShell συμπεριφέρεται σαν τη γραμμή εντολών - απλά εισάγετε εντολές και εκπέμπει τα αποτελέσματα.Για να ανοίξετε την κονσόλα Windows PowerShell, πατήστε ξανά το συνδυασμό πληκτρολογίου Win + R για να ανοίξετε ένα πλαίσιο εκτέλεσης και πληκτρολογήστε powerhell και στη συνέχεια πατήστε enter.Τα
REPL προτροπές όπως αυτό είναι εξαιρετικά χρήσιμα για άμεση ικανοποίηση: εισάγετε μια εντολή και παίρνετε αποτελέσματα.Ενώ η κονσόλα δεν προσφέρει intellisense, προσφέρει κάτι που ονομάζεται ολοκλήρωση καρτελών που λειτουργεί πολύ το ίδιο - απλά ξεκινήστε να πληκτρολογείτε μια εντολή και πιέστε την καρτέλα για να περιηγηθείτε στους πιθανούς αγώνες.
Χρήση του συστήματος βοήθειας
Σε προηγούμενες εκδόσεις του PowerShell, τα αρχεία βοήθειας συμπεριλήφθηκαν κατά την εγκατάσταση των Windows.Αυτή ήταν μια καλή λύση για το μεγαλύτερο μέρος, αλλά μας άφησε ένα σημαντικό πρόβλημα.Όταν η ομάδα βοήθειας PowerShell έπρεπε να σταματήσει να εργάζεται στα αρχεία βοήθειας, οι προγραμματιστές του PowerShell εξακολουθούσαν να είναι απασχολημένοι με την κωδικοποίηση και την πραγματοποίηση αλλαγών.Αυτό σήμαινε ότι όταν αποσταλεί το PowerShell, τα αρχεία βοήθειας ήταν λανθασμένα επειδή δεν περιείχαν τις νεώτερες αλλαγές που έγιναν στον κώδικα.Για την επίλυση αυτού του προβλήματος, το PowerShell 3 έρχεται χωρίς αρχεία βοήθειας από το κουτί και περιλαμβάνει ένα ενημερωμένο σύστημα βοήθειας.Αυτό σημαίνει ότι πριν κάνετε οτιδήποτε θέλετε να κατεβάσετε τα πιο πρόσφατα αρχεία βοήθειας.Μπορείτε να το κάνετε ανοίγοντας μια κονσόλα PowerShell και τρέχοντας:
Update-Help
Συγχαρητήρια για την εκτέλεση της πρώτης σας εντολής PowerShell!Η αλήθεια είναι ότι η εντολή Ενημέρωση-Βοήθεια έχει πολύ περισσότερες επιλογές από την απλή εκτέλεση και για να τις δούμε, θα θέλαμε να δούμε τη βοήθεια για την εντολή.Για να προβάλετε τη βοήθεια για μια εντολή, απλά μεταβιβάζετε το όνομα της εντολής με την οποία θέλετε βοήθεια στην παράμετρο Name της εντολής Get-Help, για παράδειγμα:
Get-Help -Να ενημερωθείτε-Βοήθεια
Αναρωτιέστε πιθανώς πώς να ερμηνεύσετεόλο αυτό το κείμενο ούτως ή άλλως, εννοώ γιατί υπάρχουν δύο μέρη πληροφοριών στο τμήμα σύνταξης και γιατί υπάρχουν τόσες πολλές αγκύλες σε όλο τον χώρο;Πρώτα πράγματα πρώτα: ο λόγος που υπάρχουν δύο μπλοκ πληροφοριών κάτω από την ενότητα σύνταξης είναι επειδή αντιπροσωπεύουν διαφορετικούς τρόπους για να εκτελέσετε την εντολή.Αυτά είναι τεχνικά γνωστά σύνολα παραμέτρων και μπορείτε να χρησιμοποιήσετε μόνο ένα κάθε φορά( δεν μπορείτε να συνδυάσετε παραμέτρους από διαφορετικά σύνολα).Στο παραπάνω στιγμιότυπο οθόνης μπορείτε να δείτε ότι το κορυφαίο σύνολο παραμέτρων έχει μια παράμετρο SourcePath ενώ το κάτω δεν το κάνει.Ο λόγος είναι ότι θα χρησιμοποιούσατε το ανώτατο σύνολο παραμέτρων( αυτό που περιλαμβάνει το SourcePath) εάν επικαιροποιούσατε τα αρχεία βοήθειας από άλλο μηχάνημα στο δίκτυό σας που είχε ήδη φορτώσει, ενώ δεν θα χρειαστεί να ορίσετε μια διαδρομή πηγής εάναπλά ήθελε να αρπάξει τα πιο πρόσφατα αρχεία από τη Microsoft.
Για να απαντήσετε στη δεύτερη ερώτηση, υπάρχει μια συγκεκριμένη σύνταξη που ακολουθούν τα αρχεία βοήθειας και εδώ είναι:
- Οι αγκύλες γύρω από ένα όνομα παραμέτρου και τον τύπο του σημαίνει ότι είναι μια προαιρετική παράμετρος και η εντολή θα λειτουργήσει καλά χωρίς αυτήν.
- Οι αγκύλες γύρω από το όνομα των παραμέτρων σημαίνουν ότι οι παράμετροι είναι παράμετρος θέσης.
- Το πράγμα προς τα δεξιά μιας παραμέτρου στις γωνίες παρένθετες σας δείχνει τον τύπο δεδομένων που αναμένει η παράμετρος.
Ενώ θα πρέπει να μάθετε να διαβάζετε τη σύνταξη του αρχείου βοήθειας, αν δεν είστε βέβαιοι για κάποια συγκεκριμένη παράμετρο, απλώς προσαρτήστε το πλήκτρο στο τέλος της εντολής σας για βοήθεια και μετακινηθείτε προς τα κάτω στην ενότητα παραμέτρων, όπου θα σας πει λίγο περισσότεροκάθε παράμετρο.
Get-Help -Μελέτη ενημέρωσης-Βοήθεια-Πλήρης
Το τελευταίο πράγμα που πρέπει να ξέρετε για το σύστημα βοήθειας είναι πώς μπορείτε να το χρησιμοποιήσετε για να εντοπίσετε εντολές, πράγμα που είναι πολύ εύκολο.Βλέπετε ότι το PowerShell δέχεται μπαλαντέρ σχεδόν οπουδήποτε, οπότε η χρήση τους μαζί με την εντολή Get-Help σας επιτρέπει να εντοπίσετε εύκολα τις εντολές.Για παράδειγμα, ψάχνω για εντολές που ασχολούνται με τις υπηρεσίες των Windows:
Get-Help-όνομα * υπηρεσία *
Σίγουρα, όλες αυτές οι πληροφορίες μπορεί να μην είναι χρήσιμες για το ρόπαλο, αλλά πιστέψτε με, αφιερώστε χρόνο και μάθετε πώς να χρησιμοποιήσετετο σύστημα βοήθειας.Έρχεται βολικό όλη την ώρα, ακόμη και σε προηγμένους συγγραφείς που το κάνουν εδώ και χρόνια.
Ασφάλεια
Αυτό δεν θα ήταν σωστή εισαγωγή χωρίς να αναφέρεται η ασφάλεια.Η μεγαλύτερη ανησυχία για την ομάδα PowerShell είναι ότι το PowerShell γίνεται το πιο πρόσφατο και μεγαλύτερο σημείο επίθεσης για τα παιδικά σενάρια.Έχουν θέσει ορισμένα μέτρα ασφαλείας για να διασφαλίσουν ότι αυτό δεν θα συμβεί, γι 'αυτό ας ρίξουμε μια ματιά σε αυτά.
Η πιο βασική μορφή προστασίας προέρχεται από το γεγονός ότι η επέκταση αρχείου PS1( η επέκταση που χρησιμοποιείται για να δηλώσει μια δέσμη ενεργειών PowerShell) δεν είναι καταχωρημένη με έναν κεντρικό υπολογιστή PowerShell, ο οποίος είναι εγγεγραμμένος στο Σημειωματάριο.Αυτό σημαίνει ότι αν κάνετε διπλό κλικ σε ένα αρχείο θα ανοίξει με σημειωματάριο αντί να τρέξει.
Δεύτερον, δεν μπορείτε να εκτελέσετε δέσμες ενεργειών από το κέλυφος απλά πληκτρολογώντας το όνομα του σεναρίου, πρέπει να καθορίσετε την πλήρη διαδρομή προς το σενάριο.Έτσι αν θέλετε να εκτελέσετε μια δέσμη ενεργειών στη μονάδα δίσκου C θα πρέπει να πληκτρολογήσετε:
C: \ runme.ps1
Ή αν είστε ήδη στη ρίζα της μονάδας δίσκου C μπορείτε να χρησιμοποιήσετε τα εξής:
. \ Runme.ps1
Τέλος, το PowerShell έχει κάτι που ονομάζεται Policies Execution, το οποίο σας εμποδίζει να εκτελέσετε οποιαδήποτε παλιά γραφή.Στην πραγματικότητα, από προεπιλογή, δεν μπορείτε να εκτελέσετε σενάρια και να αλλάξετε την πολιτική εκτέλεσης, εάν θέλετε να τους επιτρέψετε να τα εκτελέσετε.Υπάρχουν 4 αξιόλογες πολιτικές εκτέλεσης:
- Περιορισμένη : Αυτή είναι η προεπιλεγμένη διαμόρφωση στο PowerShell.Αυτή η ρύθμιση σημαίνει ότι δεν μπορεί να εκτελεστεί σενάριο, ανεξάρτητα από την υπογραφή του.Το μόνο πράγμα που μπορεί να τρέξει στο PowerShell με αυτή τη ρύθμιση είναι μια μεμονωμένη εντολή.
- AllSigned: Αυτή η ρύθμιση επιτρέπει την εκτέλεση σεναρίων σε PowerShell.Το σενάριο πρέπει να έχει σχετική ψηφιακή υπογραφή από έναν αξιόπιστο εκδότη.Θα υπάρξει προτροπή προτού εκτελέσετε τα σενάρια από αξιόπιστους εκδότες.
- RemoteSigned : Αυτή η ρύθμιση επιτρέπει τη λειτουργία των σεναρίων, αλλά απαιτεί ότι τα αρχεία δέσμης ενεργειών και τα αρχεία παραμέτρων που έχουν ληφθεί από το Internet έχουν σχετική ψηφιακή υπογραφή από έναν αξιόπιστο εκδότη.Τα scripts που τρέχουν από τον τοπικό υπολογιστή δεν χρειάζεται να υπογραφούν.Δεν υπάρχουν προτροπές πριν εκτελέσετε τη δέσμη ενεργειών.
- Απεριόριστο : Αυτό επιτρέπει την εκτέλεση ξεχωριστών σεναρίων, συμπεριλαμβανομένων όλων των σεναρίων και των αρχείων ρυθμίσεων που έχουν ληφθεί από το Internet.Αυτό θα περιλαμβάνει αρχεία από το Outlook και το Messenger.Ο κίνδυνος εδώ είναι η εκτέλεση σεναρίων χωρίς υπογραφή ή ασφάλεια.Ξαναρχίσαμε ότι ποτέ δεν μας αυτή τη ρύθμιση.
Για να δείτε ποια είναι η τρέχουσα πολιτική εκτέλεσής σας, ανοίξτε μια κονσόλα PowerShell και πληκτρολογήστε:
Get-ExecutionPolicy
Για αυτό το μάθημα και τις περισσότερες άλλες συνθήκες, η Πολιτική RemoteSigned είναι η καλύτερη, επομένως προχωρήστε και αλλάξτε την πολιτική σας χρησιμοποιώντας τα παρακάτω.
Σημείωση: Αυτό θα πρέπει να γίνει από μια ανυψωμένη κονσόλα PowerShell.
Set-ExecutionPolicy RemoteSigned
Αυτό είναι όλο για τους ανθρώπους αυτού του χρόνου, θα σας δούμε αύριο για κάποια περισσότερη διασκέδαση PowerShell.
Αποποίηση ευθύνης: Ο σωστός όρος για μια εντολή PowerShell είναι ένα cmdlet και από εδώ και στο εξής θα χρησιμοποιήσουμε αυτή τη σωστή ορολογία.Απλώς αισθάνθηκε πιο ενδεδειγμένο να τους ονομάσουμε εντολές για αυτή την εισαγωγή.
Εάν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να μου τιτίβετε @taybgibb, ή απλώς αφήστε ένα σχόλιο.