6Sep

Geek School: Μάθετε να χρησιμοποιείτε Remoting στο PowerShell

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

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

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

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

Τι είναι Remoting;

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

Ας πάρουμε Τεχνική

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

Show Me How

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

Enable-PSRemoting

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

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

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

Enable-PSRemoting -SkipNetworkProfileCheck

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

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

Χρήση μιας συνεδρίας PowerShell

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

Enter-PSSession -ComputerName "Darlah"

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

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

Get-ChildItem -Path C: \

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

Χρήση του Invoke-Command

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

Invoke-Command -ComputerName Darlah, localhost -ScriptBlock{ Get-EventLog Application -Newest 2}

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

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

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

Αρχική

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