Powershell Tutorial για αρχάριους
⚡ Έξυπνη Σύνοψη
Το PowerShell Scripting είναι μια αντικειμενοστρεφής μηχανή αυτοματισμού που βασίζεται στο .NET framework. Συνδυάζει cmdlets, scripts και μια γλώσσα scripting για να βοηθήσει τους διαχειριστές IT να αυτοματοποιήσουν. Windows, να διαχειρίζεστε υπηρεσίες και να συνδέετε απομακρυσμένα μηχανήματα από μία μόνο γραμμή εντολών.

Τι είναι το PowerShell;
Windows PowerShell είναι μια αντικειμενοστρεφής μηχανή αυτοματισμού και γλώσσα scripting. Έχει σχεδιαστεί για επαγγελματίες πληροφορικής και διαχειριστές συστημάτων που χρειάζονται να ελέγχουν και να αυτοματοποιούν τη διαχείριση Windows και άλλες εφαρμογές. Το PowerShell επεκτείνει τις έννοιες που μαθαίνονται στο Windows Γραμμή εντολών και Windows Script Host με νέα αντικείμενα, cmdlets και ένα ισχυρό pipeline.
Συνδυάζει την ευελιξία του scripting, την ταχύτητα μιας γραμμής εντολών και το βάθος ενός εργαλείου διαχείρισης GUI. Με αυτό, οι διαχειριστές μπορούν να λύσουν προβλήματα αποτελεσματικά και να εξαλείψουν τις ώρες χειρωνακτικής εργασίας. Αυτό το σεμινάριο παρουσιάζει τα βασικά που χρειάζεστε για να μάθετε το PowerShell από την αρχή.
Γιατί να χρησιμοποιήσετε το PowerShell;
Οι πιο σημαντικοί λόγοι για να χρησιμοποιήσετε το PowerShell είναι:
- Προσφέρει μια καλά ενσωματωμένη εμπειρία γραμμής εντολών για το λειτουργικό σύστημα.
- Παρέχει πλήρη πρόσβαση σε κάθε τύπο στο .NET framework.
- Αξιόπιστο από διαχειριστές συστημάτων σε όλες τις επιχειρήσεις.
- Σας επιτρέπει να χειρίζεστε στοιχεία διακομιστή και σταθμού εργασίας με λίγες γραμμές.
- Απευθύνεται σε διαχειριστές συστημάτων με καθαρή σύνταξη ρήματος-ουσιαστικού.
- Πιο ασφαλές από το τρέξιμο Vbscript ή άλλες παλαιότερες γλώσσες σεναρίου.
Ιστορικό PowerShell
Το PowerShell 1.0 κυκλοφόρησε για πρώτη φορά το 2006. Το PowerShell βρίσκεται πλέον στην έκδοση 7.2 και σε νεότερες εκδόσεις. Καθώς κυκλοφορούσαν οι εκδόσεις, οι δυνατότητές του και τα περιβάλλοντα φιλοξενίας του αυξήθηκαν σημαντικά.
Ιστορικό του PowerShell ανά έκδοση:
- PowerShell 1.0 — υποστήριξε την τοπική αυτοδιοίκηση Windows 2003 διακομιστή.
- PowerShell 2.0 — ενσωματωμένο με Windows 7 και Windows Server 2008 R2. Προστέθηκε απομακρυσμένη διαχείριση, συναλλαγές, εργασίες παρασκηνίου, συμβάντα και εντοπισμός σφαλμάτων.
- PowerShell 3.0 — αποστέλλεται με Windows 8 και Windows Server 2012 ως μέρος του Windows Πλαίσιο Διαχείρισης. Προστέθηκαν προγραμματισμένες εργασίες, συνδεσιμότητα συνεδρίας και αυτόματη φόρτωση λειτουργικών μονάδων.
- PowerShell 4.0 — αποστέλλεται με Windows 8.1 και Windows Server 2012 R2. Προστέθηκε η ρύθμιση παραμέτρων επιθυμητής κατάστασης, βελτιωμένος εντοπισμός σφαλμάτων και διαγνωστικά δικτύου.
- PowerShell 5.0 — μέρος του Windows Πλαίσιο Διαχείρισης 5. Προστέθηκε απομακρυσμένη αποσφαλμάτωση, ορισμοί κλάσεων και απαρίθμηση .NET.
- PowerShell 7.2 — βασισμένο στο .NET 6.0. Προσθέτει νέους τελεστές, δυναμικές προβολές σφαλμάτων και αυτόματες ειδοποιήσεις έκδοσης.
Χαρακτηριστικά του PowerShell
- Απομακρυσμένη λειτουργία PowerShell: κλήση σεναρίων και cmdlet σε έναν απομακρυσμένο υπολογιστή.
- Ιστορικό Εργασιών: Εκτελέστε σενάρια ή αγωγούς ασύγχρονα στον τοπικό υπολογιστή ή σε πολλά απομακρυσμένα μηχανήματα.
- συναλλαγές: Επιτρέψτε στα cmdlet και στους προγραμματιστές να εκτελούν ομαδοποιημένες λειτουργίες που μπορούν να δεσμευτούν ή να επαναφερθούν μαζί.
- εκδηλώσεις: να ακούτε, να προωθείτε και να ενεργείτε βάσει συμβάντων διαχείρισης και συστήματος.
- Μεταφορά αρχείων δικτύου: Εγγενής υποστήριξη για ασύγχρονη, ιεραρχημένη, περιορισμένη μεταφορά αρχείων μεταξύ μηχανών μέσω της Υπηρεσίας Ευφυούς Μεταφοράς στο Παρασκήνιο (BITS).
Πώς να ξεκινήσετε το PowerShell
Το PowerShell είναι προεγκατεστημένο σε κάθε πρόσφατη έκδοση του WindowsΕκκινήστε το ως εξής.
Βήμα 1) Αναζήτηση για το PowerShell στο Windows, έπειτα επιλέξτε το και κάντε κλικ σε αυτό.
Βήμα 2) Ανοίγει το παράθυρο PowerShell.
Cmdlet εναντίον Command
A cmdlet (προφέρεται "command-let") είναι μια ελαφριά εντολή που χρησιμοποιείται στο περιβάλλον PowerShell. Το PowerShell καλεί cmdlets στη γραμμή εντολών και μπορείτε να δημιουργήσετε τα δικά σας χρησιμοποιώντας τα API του PowerShell. Τα cmdlet διαφέρουν από τις παραδοσιακές εντολές shell με τους εξής τρόπους:
- Τα Cmdlet είναι . NET Framework αντικείμενα κλάσης· δεν μπορούν να εκτελεστούν ως ανεξάρτητα εκτελέσιμα αρχεία.
- Τα cmdlet μπορούν να γραφτούν σε μόλις δώδεκα γραμμές κώδικα.
- Η ανάλυση, η μορφοποίηση εξόδου και η παρουσίαση σφαλμάτων χειρίζονται από το χρόνο εκτέλεσης και όχι από το ίδιο το cmdlet.
- Τα cmdlet λειτουργούν με αντικείμενα, επομένως οι ροές κειμένου και τα αντικείμενα μπορούν να ρέουν μέσω αγωγών.
- Τα cmdlets βασίζονται σε εγγραφές και επεξεργάζονται ένα μεμονωμένο αντικείμενο κάθε φορά.
Οι περισσότερες λειτουργίες του PowerShell παρέχονται μέσω cmdlet, τα οποία χρησιμοποιούν πάντα ένα μοτίβο ονομασίας ρήματος-ουσιαστικού (πάντα ενικού). Τα cmdlet επιστρέφουν αντικείμενα, όχι κείμενο. A γραφή — σε αντίθεση με ένα cmdlet — είναι μια σειρά εντολών που είναι αποθηκευμένες σε ένα αρχείο κειμένου με το .ps1 επέκταση.
Συνηθισμένα ρήματα που θα χρησιμοποιήσετε για να μάθετε το PowerShell περιλαμβάνουν:
- ΕΠΙΚΟΙΝΩΝΗΣΤΕ — ανακτώ κάτι.
- Αρχική — τρέξτε κάτι.
- Έξω — εξάγετε κάτι.
- στάση — σταματώ κάτι που τρέχει.
- σετ — ορίζω κάτι.
- Νέα — δημιουργώ κάτι.
Σημαντικές εντολές PowerShell
Ζήτα βοήθεια: Δείτε βοήθεια για εντολές και θέματα PowerShell.
Παράδειγμα: εμφάνιση βοήθειας για το Format-Table εντολή.
Get-Help Format-Table
Get-Command: λάβετε πληροφορίες για οτιδήποτε μπορεί να επικαλεστεί.
Παράδειγμα: δημιουργήστε μια λίστα με cmdlets και συναρτήσεις που είναι εγκατεστημένες στον υπολογιστή.
Get-Command
Λήψη υπηρεσίας: βρίσκει όλες τις υπηρεσίες στο μηχάνημα.
Παράδειγμα: λάβετε κάθε υπηρεσία της οποίας το όνομα αρχίζει με "vm".
Get-Service "vm*"
Λήψη μέλους: δείξτε τι μπορεί να γίνει με ένα αντικείμενο.
Παράδειγμα: λίστα μελών των υπηρεσιών εικονικής μηχανής που επιστρέφονται από το Get-Service.
Get-Service "vm*" | Get-Member
Άλλα χρήσιμα cmdlets:
Get-Module— εμφάνιση εγκατεστημένων πακέτων εντολών.Get-Content— ανάγνωση ενός αρχείου και επεξεργασία του περιεχομένου του.Get-*wildcard — λίστα κάθε cmdlet που ξεκινά με "Get-".
Παράδειγμα: δημιουργήστε έναν φάκελο.
New-Item -Path 'X:\Guru99' -ItemType Directory
Παραγωγή:
Τύποι δεδομένων PowerShell
Το PowerShell υποστηρίζει τους τυπικούς τύπους δεδομένων .NET, ώστε να μπορείτε να αποθηκεύετε οποιαδήποτε τιμή χωρίς προβλήματα σε μια μεταβλητή.
Ειδικές Μεταβλητές
Το PowerShell εμφανίζει μια σειρά από ενσωματωμένες ειδικές μεταβλητές. Οι πιο χρήσιμες παρατίθενται παρακάτω.
| Ειδική Μεταβλητή | Περιγραφή |
|---|---|
| $Σφάλμα | Μια σειρά από αντικείμενα σφάλματος που αντιπροσωπεύουν τα πιο πρόσφατα σφάλματα. |
| $Host | Εμφανίζει το όνομα της τρέχουσας εφαρμογής φιλοξενίας. |
| $Profile | Αποθηκεύει την πλήρη διαδρομή του προφίλ χρήστη για το προεπιλεγμένο κέλυφος. |
| $PID | Αποθηκεύει το αναγνωριστικό διεργασίας. |
| $PSUICculture | Περιέχει το όνομα της τρέχουσας κουλτούρας UI. |
| $NULL | Περιέχει την κενή ή μηδενική τιμή. |
| $Λάθος | Περιέχει την τιμή boolean FALSE. |
| $True | Περιέχει την λογική τιμή TRUE. |
PowerShell Scripts
Τα σενάρια PowerShell αποθηκεύονται σε .ps1 αρχεία. Από προεπιλογή, δεν μπορείτε να εκτελέσετε ένα σενάριο κάνοντας διπλό κλικ σε αυτό — αυτή η προστασία προστατεύει το σύστημα από τυχαία βλάβη. Για να εκτελέσετε ένα σενάριο, κάντε δεξί κλικ σε αυτό και επιλέξτε «Εκτέλεση με PowerShell».
Μια πολιτική εκτέλεσης ελέγχει ποια σενάρια επιτρέπεται να εκτελούνται. Δείτε την τρέχουσα πολιτική με Get-ExecutionPolicyΠιθανές τιμές περιλαμβάνουν:
- Περιορισμένος — δεν επιτρέπονται σενάρια. Αυτή είναι η προεπιλογή.
- Όλα — εκτελούνται μόνο σενάρια που έχουν υπογραφεί από αξιόπιστο προγραμματιστή και το καθένα απαιτεί επιβεβαίωση.
- RemoteSigned — εκτελούνται τα δικά σας σενάρια, καθώς και υπογεγραμμένα σενάρια από αξιόπιστες πηγές.
- Απεριόριστος — οποιοδήποτε σενάριο μπορεί να εκτελεστεί (χρησιμοποιήστε με φειδώ).
Βήματα για την αλλαγή της πολιτικής εκτέλεσης:
Βήμα 1) Ανοίξτε μια αναβαθμισμένη προτροπή PowerShell κάνοντας δεξί κλικ στο PowerShell και επιλέγοντας Εκτέλεση ως διαχειριστής.
Βήμα 2) Εκτελέστε τις παρακάτω εντολές.
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- εισάγετε
Yστην προτροπή επιβεβαίωσης. Get-ExecutionPolicy
Πρώτο σενάριο PowerShell
Ανοίξτε το Σημειωματάριο και πληκτρολογήστε:
Write-Host "Hello, Guru99!"
Αποθηκεύστε το αρχείο με ένα .ps1 επέκταση — για παράδειγμα, FirstScript.ps1.
Στο PowerShell, εκτελέστε το σενάριο με:
& "X:\FirstScript.ps1"
Τι είναι το PowerShell ISE;
The Windows Ενσωματωμένο περιβάλλον δέσμης ενεργειών PowerShell (ISE) είναι ο προεπιλεγμένος επεξεργαστής για το PowerShell. Στο ISE μπορείτε να εκτελέσετε εντολές, να γράψετε δοκιμές και να εντοπίσετε σφάλματα σε ένα γραφικό περιβάλλον που βασίζεται σε παράθυρα. Υποστηρίζει επεξεργασία πολλαπλών γραμμών, χρωματισμό σύνταξης, συμπλήρωση στηλοθετών, επιλεκτική εκτέλεση και πολλά άλλα.
Το PowerShell ISE προσφέρει επίσης ένα παράθυρο κονσόλας που εκτελεί απευθείας εντολές, ενώ τα πλευρικά παράθυρα εμφανίζουν την πηγή των σεναρίων σας και τυχόν εργαλεία που είναι συνδεδεμένα στο ISE. Μπορείτε να ανοίξετε πολλά παράθυρα σεναρίων ταυτόχρονα — χρήσιμο κατά την ανίχνευση σφαλμάτων σε σενάρια που εξαρτώνται από συναρτήσεις που ορίζονται σε άλλα σενάρια ή ενότητες.
Αναδημιουργήστε ξανά το προηγούμενο σενάριο στο ISE:
- Επικολλήστε τον κώδικα στον επεξεργαστή.
- Αποθηκεύστε το σενάριο.
- Πατήστε F5 για να το εκτελέσετε.
- Παρατηρήστε την έξοδο στο παράθυρο της κονσόλας.
Δείγμα 2: το ακόλουθο σενάριο εμφανίζεται δωρεάν εικονική μνήμη στο μηχάνημα.
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell Concepts
Οι ακόλουθες έννοιες αποτελούν το λεξιλόγιο της καθημερινής εργασίας στο PowerShell.
| Έννοια | Περιγραφή |
|---|---|
| Cmdlet | Ενσωματωμένες εντολές γραμμένες σε γλώσσες .NET όπως VB ή C#. Οι προγραμματιστές επεκτείνουν το σύνολο φορτώνοντας ή γράφοντας συμπληρωματικά προγράμματα PowerShell. |
| Συναρτήσεις | Εντολές γραμμένες στην ίδια τη γλώσσα PowerShell, χωρίς να χρειάζεται IDE όπως Visual Studio. |
| Σενάρια | Αρχεία κειμένου σε δίσκο με το .ps1 επέκταση. |
| Εφαρμογές | Υφιστάμενες Windows προγράμματα που καλούνται από το κέλυφος. |
| Τι Αν | Λέει στο cmdlet να μην εκτελεστεί, αλλά να περιγράψει τι θα συνέβαινε αν εκτελεστεί. |
| Επιβεβαιώνω | Δίνει εντολή στο cmdlet να εμφανίσει ένα μήνυμα πριν από την εκτέλεση. |
| Πολύλογος | Παρέχει υψηλότερο επίπεδο λειτουργικής λεπτομέρειας. |
| Debug | Δίνει εντολή στο cmdlet να εκπέμψει πληροφορίες εντοπισμού σφαλμάτων. |
| ErrorAction | Ορίζει τι κάνει το cmdlet σε περίπτωση σφάλματος. Επιτρεπόμενες τιμές: continue, stop, silentlycontinue, inquiry. |
| ErrorVariable | Ονομάζει τη μεταβλητή που περιέχει πληροφορίες σφάλματος. |
| Outvariable | Υποδεικνύει στο cmdlet να αποθηκεύσει την έξοδό του σε μια συγκεκριμένη μεταβλητή. |
| ΈξωBuffer | Διατηρεί έναν συγκεκριμένο αριθμό αντικειμένων πριν τα στείλει στον αγωγό. |
Πλεονεκτήματα της χρήσης σεναρίων PowerShell
- Τα σενάρια PowerShell είναι ισχυρά και συνοπτικά — μπορείτε να πετύχετε πολλά σε λίγες μόνο γραμμές.
- Οι μεταβλητές δηλώνονται με το
$<variable>σύνταξη. - Οι μεταβλητές μπορούν να περιέχουν έξοδο εντολών, αντικείμενα και πρωτόγονες τιμές.
- Ο τύπος μεταβλητής δεν χρειάζεται να καθοριστεί ρητά.
PowerShell έναντι γραμμής εντολών
| PowerShell | Γραμμή εντολών |
|---|---|
| Βαθιά ενσωματωμένο με WindowsΠροσφέρει μια διαδραστική γραμμή εντολών και μια πλήρη γλώσσα scripting. | Προεπιλεγμένη διεπαφή γραμμής εντολών που παρέχεται από MicrosoftΜια απλή εφαρμογή Win32 που επικοινωνεί με άλλα αντικείμενα Win32. |
| Χρησιμοποιεί cmdlets που μπορούν να κληθούν διαδραστικά ή μέσω σεναρίων αυτοματισμού. | Δεν υπάρχουν cmdlets. |
| Αντιμετωπίζει την έξοδο ως αντικείμενα, ώστε να μπορεί να ρέει σε ένα άλλο cmdlet μέσω της διοχέτευσης. | Η έξοδος είναι μια απλή ροή κειμένου, όχι αντικειμένων. |
| Προηγμένο σε χαρακτηριστικά, δυνατότητες και εσωτερική αρχιτεκτονική. | Βασικό κέλυφος, κατάλληλο για παλαιότερες εργασίες δέσμης. |
Εφαρμογές του PowerShell
Το PowerShell έχει γίνει η βασική επιλογή για τους διαχειριστές IT, επειδή μειώνει δραματικά την προσπάθεια σε μεγάλα εταιρικά δίκτυα. Φανταστείτε να διαχειρίζεστε περισσότερους από τετρακόσιους διακομιστές και να λανσάρετε μια νέα λύση ασφαλείας που εξαρτάται από μια συγκεκριμένη υπηρεσία που εκτελείται σε κάθε κεντρικό υπολογιστή.
Η μη αυτόματη σύνδεση σε κάθε διακομιστή είναι αργή και επιρρεπής σε σφάλματα. Ένα μόνο σενάριο PowerShell μπορεί να ελέγξει κάθε διακομιστή μέσα σε λίγα λεπτά, να αναφέρει ποιοι κεντρικοί υπολογιστές εκτελούν ήδη την υπηρεσία, ακόμη και να την ενεργοποιήσει στους υπόλοιπους. Το σενάριο καταγράφει την πρόθεση μία φορά και την εφαρμόζει αξιόπιστα σε όλη την έκταση.
















