Geek School Μάθετε πώς να αυτοματοποιήσετε τα Windows με το PowerShell
Σε αυτή την έκδοση του 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 και τρέχοντας:
Ενημέρωση-Βοήθεια
Συγχαρητήρια για την εκτέλεση της πρώτης σας εντολής PowerShell! Η αλήθεια είναι ότι η εντολή Ενημέρωση-Βοήθεια έχει πολύ περισσότερες επιλογές από την απλή εκτέλεση και για να τις δούμε, θα θέλαμε να δούμε τη βοήθεια για την εντολή. Για να δείτε τη βοήθεια για μια εντολή, απλά μεταβιβάζετε το όνομα της εντολής που θέλετε βοήθεια στην παράμετρο Όνομα της εντολής Get-Help, για παράδειγμα:
Λήψη-Βοήθεια -Μενού ενημέρωσης-Βοήθεια
Αναρωτιέστε πιθανώς πώς να ερμηνεύσετε όλο αυτό το κείμενο ούτως ή άλλως, εννοώ γιατί υπάρχουν δύο παρτίδες πληροφοριών κάτω από το τμήμα σύνταξης και γιατί υπάρχουν τόσα πολλά παρένθεση σε όλο τον χώρο; Πρώτα πράγματα πρώτα: ο λόγος που υπάρχουν δύο μπλοκ πληροφοριών κάτω από την ενότητα σύνταξης είναι επειδή αντιπροσωπεύουν διαφορετικούς τρόπους για να εκτελέσετε την εντολή. Αυτά είναι τεχνικά γνωστά σύνολα παραμέτρων και μπορείτε να χρησιμοποιήσετε μόνο ένα κάθε φορά (δεν μπορείτε να συνδυάσετε παραμέτρους από διαφορετικά σύνολα). Στο παραπάνω στιγμιότυπο οθόνης μπορείτε να δείτε ότι το κορυφαίο σύνολο παραμέτρων έχει μια παράμετρο SourcePath ενώ το κάτω δεν το κάνει. Ο λόγος είναι ότι θα χρησιμοποιούσατε το κορυφαίο σύνολο παραμέτρων (αυτό που περιλαμβάνει το SourcePath) εάν επικαιροποιούσατε τα αρχεία βοήθειας από κάποιο άλλο μηχάνημα στο δίκτυό σας που είχε ήδη κατεβάσει, ενώ δεν θα χρειαστεί να καθορίσετε μια διαδρομή πηγής εάν απλά ήθελε να αρπάξει τα πιο πρόσφατα αρχεία από τη Microsoft.
Για να απαντήσετε στο δεύτερο ερώτημα, υπάρχει μια συγκεκριμένη σύνταξη που ακολουθούν τα αρχεία βοήθειας και εδώ είναι:
- Οι τετράγωνες αγκύλες γύρω από ένα όνομα παραμέτρου και τον τύπο του σημαίνει ότι είναι μια προαιρετική παράμετρος και η εντολή θα λειτουργήσει καλά χωρίς αυτήν.
- Οι τετράγωνες αγκύλες γύρω από το όνομα των παραμέτρων σημαίνουν ότι οι παράμετροι είναι παράμετρος θέσης.
- Το πράγμα προς τα δεξιά μιας παραμέτρου στα γωνιακά παρενθέματα σας λέει τον τύπο δεδομένων που αναμένει η παράμετρος.
Παρόλο που θα πρέπει να μάθετε να διαβάζετε τη σύνταξη του αρχείου βοήθειας, εάν δεν είστε βέβαιοι για κάποια συγκεκριμένη παράμετρο, απλώς προσαρτήστε το πλήκτρο στο τέλος της εντολής σας για βοήθεια και μετακινηθείτε προς τα κάτω στην ενότητα παραμέτρων, όπου θα σας πει λίγα περισσότερα για κάθε παράμετρο.
Λήψη-Βοήθεια -Να ενημερώσετε-Βοήθεια-Πλήρης
Το τελευταίο πράγμα που πρέπει να ξέρετε για το σύστημα βοήθειας είναι πώς μπορείτε να το χρησιμοποιήσετε για να ανακαλύψετε εντολές, πράγμα που είναι πραγματικά πολύ εύκολο. Βλέπετε ότι το PowerShell δέχεται μπαλαντέρ σχεδόν οπουδήποτε, οπότε η χρήση τους μαζί με την εντολή Get-Help σας επιτρέπει να εντοπίσετε εύκολα τις εντολές. Για παράδειγμα, ψάχνω για εντολές που ασχολούνται με τις Υπηρεσίες των Windows:
Λήψη-Βοήθεια-όνομα * υπηρεσία *
Σίγουρα, όλες αυτές οι πληροφορίες μπορεί να μην είναι χρήσιμες για το ρόπαλο, αλλά με εμπιστευθείτε, αφιερώστε χρόνο και μάθετε πώς να χρησιμοποιήσετε το σύστημα βοήθειας. Έρχεται βολικό όλη την ώρα, ακόμη και σε προηγμένους συγγραφείς που το κάνουν εδώ και χρόνια.
Ασφάλεια
Αυτό δεν θα ήταν σωστή εισαγωγή χωρίς να αναφέρεται η ασφάλεια. Η μεγαλύτερη ανησυχία για την ομάδα 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 και από εδώ και στο εξής θα χρησιμοποιήσουμε αυτή τη σωστή ορολογία. Απλώς αισθάνθηκε πιο κατάλληλο να τους ονομάσουμε εντολές για αυτή την εισαγωγή.
Αν έχετε οποιεσδήποτε ερωτήσεις, μπορείτε να μου τιτίβετε @ ttybgibb, ή απλά αφήστε ένα σχόλιο.