Μία από τις καλύτερες δυνατότητες που προσφέρει το PowerShell είναι η δυνατότητα απομακρυσμένης διαχείρισης των διακομιστών σας. Σας επιτρέπει ακόμη και να διαχειριστείτε πολλά από αυτά ταυτόχρονα.

Φροντίστε να διαβάσετε τα προηγούμενα άρθρα της σειράς:


  • Μάθετε πώς να αυτοματοποιείτε τα Windows με το PowerShell Μαθαίνοντας να χρησιμοποιείτε Cmdlets στο PowerShell Learning Πώς να χρησιμοποιείτε αντικείμενα στο PowerShell Learning Μορφοποίηση, φιλτράρισμα και σύγκριση στο PowerShell

Και μείνετε συντονισμένοι για την υπόλοιπη σειρά όλη την εβδομάδα.

Τι είναι το Remoting;

Η μαζική διαχείριση των διακομιστών σας μπορεί να είναι κουραστική και αν έπρεπε να πραγματοποιήσετε μια αλλαγή διαμόρφωσης IIS σε 50 διακομιστές ιστού πριν, θα ξέρετε τι εννοώ. Αυτά είναι τα είδη καταστάσεων όταν το PowerShell Remoting και οι δυνατότητες γραφής της γλώσσας μπορούν να βοηθήσουν. Χρησιμοποιώντας HTTP ή το πιο ασφαλές HTTPS, το PowerShell Remoting σάς επιτρέπει να στέλνετε εντολές σε ένα απομακρυσμένο μηχάνημα στο δίκτυό σας. Στη συνέχεια, το μηχάνημα εκτελεί τις εντολές και σας στέλνει την έξοδο, η οποία με τη σειρά της εμφανίζεται στην οθόνη σας.

Ας πάρουμε τεχνικό

Στον πυρήνα του PowerShell Remoting βρίσκεται μια μεμονωμένη υπηρεσία Windows, η υπηρεσία απομακρυσμένης διαχείρισης των Windows ή η υπηρεσία WinRM, όπως έχει γίνει γνωστό. Χρησιμοποιώντας το WinRM, μπορείτε να ρυθμίσετε μία ή περισσότερες διαμορφώσεις περιόδου λειτουργίας (επίσης γνωστές ως τελικά σημεία), οι οποίες είναι βασικά αρχεία που περιέχουν πληροφορίες σχετικά με την εμπειρία που θέλετε να παρέχετε στο άτομο που συνδέεται με την απομακρυσμένη παρουσία PowerShell. Πιο συγκεκριμένα, μπορείτε να χρησιμοποιήσετε αρχεία διαμόρφωσης περιόδου σύνδεσης για να ορίσετε ποιος μπορεί και ποιος δεν μπορεί να συνδεθεί στην παρουσία, ποια cmdlet και σενάρια μπορούν να εκτελέσουν, καθώς και σε ποιο πλαίσιο ασφαλείας πρέπει να εκτελείται η περίοδος λειτουργίας. Χρησιμοποιώντας την υπηρεσία WinRM, ρυθμίζετε επίσης "ακροατές", οι οποίοι ακούνε για εισερχόμενα αιτήματα PowerShell. Αυτοί οι "ακροατές" μπορούν είτε να είναι HTTP είτε HTTPS και μπορούν να συνδέονται με μία μόνο διεύθυνση IP στο μηχάνημά σας. Όταν ανοίγετε μια σύνδεση PowerShell σε άλλο μηχάνημα (τεχνικά αυτό γίνεται χρησιμοποιώντας το πρωτόκολλο WS-MAN, το οποίο βασίζεται σε HTTP), η σύνδεση συνδέεται με έναν από αυτούς τους "ακροατές". Οι «ακροατές» είναι τότε υπεύθυνοι για την αποστολή της κυκλοφορίας στην εφαρμογή που σχετίζεται με το κατάλληλο αρχείο διαμόρφωσης περιόδου λειτουργίας. η εφαρμογή (συνήθως PowerShell, αλλά μπορείτε να έχετε άλλες εφαρμογές φιλοξενίας εάν θέλετε), στη συνέχεια εκτελεί την εντολή και τροφοδοτεί τα αποτελέσματα μέσω του "ακροατή" σε όλο το δίκτυο και επιστρέφει στον υπολογιστή σας.

Δείξε μου πώς

Το πρώτο πράγμα που θα πρέπει να κάνετε είναι να ενεργοποιήσετε το Remoting στον υπολογιστή στον οποίο θέλετε να συνδεθείτε. Αυτό μπορεί να γίνει εκτελώντας τα εξής:

Ενεργοποίηση-PSRemoting
εικόνα

Στη συνέχεια, θα πρέπει να απαντήσετε ναι σε όλες τις οδηγίες. Όταν εκτελείτε το Enable-PSRemoting, γίνονται μερικές αλλαγές στον υπολογιστή σας:

  • Η υπηρεσία WinRM ξεκινά. Η υπηρεσία WinRM αλλάζει από τη λειτουργία μη αυτόματης εκκίνησης σε αυτόματη. Δημιουργεί ένα πρόγραμμα ακρόασης HTTP που συνδέεται με όλες τις κάρτες δικτύου σας. Δημιουργεί επίσης μια εξαίρεση εισερχόμενου τείχους προστασίας για το πρωτόκολλο WS-MAN. Δημιουργούνται ορισμένες προεπιλεγμένες ρυθμίσεις συνόδου

Εάν χρησιμοποιείτε Windows 7 και η τοποθεσία της κάρτας δικτύου σας έχει οριστεί σε Δημόσια, η ενεργοποίηση του PowerShell Remoting θα αποτύχει. Για να το διορθώσετε, απλώς μεταβείτε στην τοποθεσία δικτύου οικίας ή εργασίας. Εναλλακτικά, μπορείτε να παραλείψετε τον έλεγχο δικτύου χρησιμοποιώντας τα εξής:

Ενεργοποίηση-PSRemoting - SkipNetworkProfileCheck
εικόνα

Ωστόσο, σας συνιστούμε να αλλάξετε την τοποθεσία του δικτύου σας.

Υπάρχουν δύο τρόποι σύνδεσης σε άλλο μηχάνημα χρησιμοποιώντας το PowerShell. Υπάρχει η μέθοδος one-one, η οποία μοιάζει πολύ με τη χρήση SSH και στη συνέχεια υπάρχει η μέθοδος one to many.

Χρήση περιόδου λειτουργίας PowerShell

Ο πρώτος τρόπος σύνδεσης με ένα απομακρυσμένο μηχάνημα χρησιμοποιώντας το PowerShell είναι να χρησιμοποιήσετε κάτι που ονομάζεται PowerShell Session. Με απλά λόγια, μια συνεδρία σας επιτρέπει να εκτελείτε εντολές στο απομακρυσμένο μηχάνημα με διαδραστικό τρόπο όπως και στο δικό σας μηχάνημα. Για να ανοίξετε μια συνεδρία απλώς πληκτρολογήστε τα εξής:

Enter-PSSession –Ονομα υπολογιστή «Darlah»
εικόνα

Η προτροπή θα αποκτήσει ένα πρόθεμα που υποδηλώνει το μηχάνημα στο οποίο εκτελείτε τα cmdlet.

εικόνα

Από εδώ μπορείτε πραγματικά να αντιμετωπίσετε το μήνυμα σαν να καθόταν στο απομακρυσμένο μηχάνημα. Για παράδειγμα, εάν θέλετε να δείτε όλα τα αρχεία στη μονάδα C: \ μπορείτε να κάνετε ένα απλό:

Get-ChildItem –Path C: \
εικόνα

Εάν προέρχεστε από φόντο Linux, μπορείτε να σκεφτείτε να χρησιμοποιήσετε αυτήν τη μέθοδο απομακρυσμένης απομακρυσμένης ως εναλλακτική λύση του PowerShell αντί του SSH.

Χρησιμοποιώντας το Invoke-Command

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

Invoke-Command -ComputerName Darlah, localhost -ScriptBlock {Get-EventLog Application -Newest 2}
εικόνα

Δεδομένου ότι η εντολή εκτελείται παράλληλα σε όλα τα μηχανήματα, θα χρειαστείτε κάποιο τρόπο για να δείτε από ποιο PC προήλθε ένα δεδομένο αποτέλεσμα. Μπορείτε να το κάνετε αυτό κοιτάζοντας την ιδιότητα PSComputerName.

εικόνα

Όταν χρησιμοποιείτε το Invoke-Command, δεν έχετε πλέον τα αντικείμενα που θα μπορούσατε να περιμένετε στο Pipeline. Βλέπετε, προκειμένου το PowerShell να πάρει τις πληροφορίες από το απομακρυσμένο μηχάνημα πίσω στο μηχάνημά σας, χρειάζονται κάποιο τρόπο να αντιπροσωπεύουν τα αντικείμενα που εξάγει η εντολή που εκτελέσατε στις απομακρυσμένες μηχανές. Αυτές τις μέρες φαίνεται ότι ο επιλεγμένος τρόπος για να αντιπροσωπεύσετε μια ιεραρχική δομή δεδομένων είναι να χρησιμοποιήσετε το XML, πράγμα που σημαίνει ότι όταν εκδίδετε μια εντολή χρησιμοποιώντας το Invoke-Command, τα αποτελέσματα πρώτα σειριοποιούνται σε XML προτού σταλούν πίσω στο μηχάνημά σας. Μόλις επιστρέψουν στο μηχάνημά σας, αποστειρώνονται ξανά σε ένα αντικείμενο. Το gotcha εδώ είναι ότι όταν αποστειρώνονται, όλες οι μέθοδοι, εκτός από τη μέθοδο ToString (), που το αντικείμενο είχε αφαιρεθεί από αυτό.

εικόνα

Σημείωση: Υπάρχουν ορισμένες εξαιρέσεις σε αυτόν τον κανόνα, για παράδειγμα οι περισσότεροι πρωτόγονοι τύποι όπως οι ακέραιοι μπορούν να αποστειρωθούν με τις μεθόδους που περιλαμβάνονται. Υπάρχει επίσης μια διαδικασία που ονομάζεται Rehydration όπου ορισμένες μέθοδοι μπορούν να προστεθούν πίσω σε αποστειρωμένα αντικείμενα. Λοιπόν, προσέξτε και θυμηθείτε ότι το Get-Member είναι φίλος σας.

Εργασία για το σπίτι


  • Διαβάστε το ebook των μυστικών του PowerShell Remoting του Don Jones.