Αρχική σελίδα » πως να » Geek School Μάθετε να χρησιμοποιείτε Remoting στο PowerShell

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

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

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

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

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

    Τι είναι Remoting?

    Η μαζική διαχείριση των διακομιστών σας μπορεί να είναι κουραστική και αν χρειαστεί να αλλάξετε τη διαμόρφωση των IIS σε 50 webservers πριν, θα ξέρετε τι εννοώ. Αυτά είναι τα είδη των καταστάσεων κατά τις οποίες το 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 στο μηχάνημα στο οποίο θέλετε να συνδεθείτε. Αυτό μπορεί να γίνει με την εκτέλεση των παρακάτω:

    Enable-PSRemoting

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

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

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

    Enable-PSRemoting -SkipNetworkProfileCheck

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

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

    Χρησιμοποιώντας μια συνεδρία PowerShell

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

    Εισαγωγή-PSSession-Υπολογιστής Όνομα "Darlah"

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

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

    Get-ChildItem -Διαδρομή C: \

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

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

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

    Invoke-Command -ComputerName Darlah, localhost -ScriptBlock Get-EventLog Εφαρμογή -Newest 2

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

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

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

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

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