Geek School Γράφοντας το πρώτο σας πλήρες σενάριο PowerShell
Πριν από λίγες εβδομάδες, ο Geek σας έδειξε πώς μπορείτε να χρησιμοποιήσετε τη γραμμή εντολών για να βρείτε πότε τέθηκε σε λειτουργία ο υπολογιστής σας τελευταίος. Σε αυτήν την τελευταία εγκατάσταση του Geek School for PowerShell, πρόκειται να γράψουμε μια επαναχρησιμοποιήσιμη εντολή PowerShell για να κάνουμε το ίδιο πράγμα.
Βεβαιωθείτε ότι έχετε διαβάσει τα προηγούμενα άρθρα της σειράς:
- Μάθετε πώς να αυτοματοποιήσετε τα Windows με το PowerShell
- Μάθηση χρήσης Cmdlets στο PowerShell
- Πώς να χρησιμοποιήσετε αντικείμενα στο PowerShell
- Εκμάθηση μορφοποίησης, φιλτράρισμα και σύγκριση σε PowerShell
- Μάθετε να χρησιμοποιείτε Remoting στο PowerShell
- Χρησιμοποιώντας το PowerShell για να λάβετε πληροφορίες υπολογιστή
- Εργασία με συλλογές στο PowerShell
- Μάθετε πώς να χρησιμοποιείτε εργασίες στο PowerShell
- Μάθετε πώς να επεκτείνετε το PowerShell
- Εκμάθηση μεταβλητών PowerShell, εισόδου και εξόδου
Γράφοντας το πρώτο σας σενάριο
Το πρώτο πράγμα που πρέπει να κάνουμε είναι να βρούμε έναν τρόπο πρόσβασης στις πληροφορίες που αναζητούμε. Δεδομένου ότι έχουμε να κάνουμε με πληροφορίες διαχείρισης, ίσως χρειαστεί να ρίξουμε μια ματιά στη χρήση του WMI, το οποίο πράγματι έχει μια κλάση που ονομάζεται Win32_OperatingSystem και σας επιτρέπει να βλέπετε λεπτομερείς πληροφορίες για το λειτουργικό σας σύστημα, συμπεριλαμβανομένης της τελευταίας εκκίνησης.
Έτσι τώρα που ξέρουμε πού μπορούμε να βρούμε τις πληροφορίες που αναζητούμε, ανοίξτε το ISE και πληκτρολογήστε τα παρακάτω.
Get-WmiObject-Κλάση Win32_OperatingSystem-Όνομα υπολογιστή του υπολογιστή localhost |
Επιλέξτε-Object-Property CSName, LastBootUpTime
Σημείωση: Έπρεπε να χωρίσω τον κώδικα μου πάνω από δύο γραμμές ώστε να ταιριάζει με το screenshot, αλλά μπορείτε να το πληκτρολογήσετε σε μία γραμμή. Εάν επιλέξετε να το διαχωρίσετε σε δύο γραμμές, βεβαιωθείτε ότι ο χαρακτήρας σωλήνα είναι ο τελευταίος χαρακτήρας στη γραμμή 1.
Τώρα κάντε κλικ στο πράσινο κουμπί "Run Script" ή πατήστε το πλήκτρο F5 στο πληκτρολόγιό σας για να δοκιμάσετε τον κώδικα.
Οι χρόνοι WMI μπορεί να είναι λίγο κρυπτικοί. Με αυτό εννοούμε αν κοιτάξουμε την ιδιότητα LastBootUpTime, λέει το 2013-03-19 στις 18:26:21, αλλά για κάποιο λόγο οι τύποι WMI αποφάσισαν να συνενώσουν όλα αυτά σε μια μονή συμβολοσειρά. Ευτυχώς για εμάς, δεν χρειάζεται να ανησυχούμε για τη χειρωνακτική ανάλυση της συμβολοσειράς, καθώς υπάρχει ένας ευκολότερος τρόπος να το κάνετε, αν και πιο προηγμένος. Θα χρειαστεί να αλλάξετε το τμήμα Select-Object του κώδικα για να το κάνετε όπως παρακάτω:
Επιλογή-αντικείμενο-ιδιότητα CSName, @ n = "Τελευταία εκκίνηση";
e = [Management.ManagementDateTimeConverter] :: ToDateTime ($ _. LastBootUpTime)
Αυτό που κάνουμε εδώ είναι η δημιουργία μιας προσαρμοσμένης ιδιότητας που ονομάζεται "Last Booted" και καθορίζοντας ότι η τιμή της πρέπει να είναι το αποτέλεσμα της κλήσης της στατικής μεθόδου ToDateTime στην ιδιότητα LastBootUpTime του τρέχοντος αντικειμένου αγωγού. Ο κωδικός σας θα πρέπει τώρα να μοιάζει με αυτόν.
Η εκτέλεση του κώδικα τώρα θα δώσει πολύ πιο ευανάγνωστο τελευταίο χρόνο εκκίνησης.
Τώρα που είμαστε ικανοποιημένοι με τη βασική λειτουργικότητα του σεναρίου μας, πρέπει να το αποθηκεύσουμε. Για λόγους απλότητας, ας το αποθηκεύσουμε ως εξής:
C: \ Get-LastBootTime.ps1
Τώρα μεταβείτε στο κάτω μισό του ISE και εκτελέστε τα εξής:
C: \ Get-LastBootTime.ps1
Μεγάλος! Το σενάριό μας λειτουργεί όπως αναμένεται, ωστόσο εξακολουθεί να υπάρχει ένα πρόβλημα με το σενάριό μας. Εμείς hardcoded το όνομα του υπολογιστή που θέλουμε να πάρει την τελευταία ώρα εκκίνησης για. Αντί των τιμών σκληρού κώδικα, θα πρέπει να παράγουμε μια παράμετρο έτσι ώστε όποιος χρησιμοποιεί το σενάριο να μπορεί να επιλέξει τον υπολογιστή στον οποίο εκτελεί τη δέσμη ενεργειών. Για να το κάνετε αυτό, πηγαίνετε στην κορυφή της δέσμης ενεργειών σας και κάντε τα εξής.
param (
[συμβολοσειρά] $ ComputerName
)
Στη συνέχεια, αντικαταστήστε την τιμή hardcoded localhost με μεταβλητή $ ComputerName. Το σενάριό σας θα πρέπει τώρα να φαίνεται ως εξής:
Αποθηκεύστε τη δέσμη ενεργειών σας, κατόπιν επιστρέψτε στο κάτω μισό του ISE και προβάλετε τη βοήθεια για το σενάριό σας.
βοηθήστε το C: \ Get-LastBootTime.ps1
Εξαιρετικό, οπότε τώρα μπορούμε να καθορίσουμε το όνομα του υπολογιστή που θέλουμε να πάρουμε τον τελευταίο χρόνο εκκίνησης για τη χρήση της νέας παραμέτρου ComputerName. Δυστυχώς, εξακολουθούν να υπάρχουν λίγα πράγματα. Πρώτον, η παράμετρος ComputerName είναι προαιρετική και δεύτερον, αυτό είναι το πιο άσχημο χρήσιμο που έχω δει ποτέ, οπότε ας λύσουμε αυτά τα θέματα γρήγορα. Για να καταστήσετε υποχρεωτική την παράμετρο ComputerName, αλλάξτε τα περιεχόμενα του block param στο ακόλουθο.
[Παράμετρος (Υποχρεωτικό = $ true)] [Σειρά] $ Όνομα_υπολογιστή
Όσον αφορά την κατασκευή ενός καλύτερου αρχείου βοήθειας, η πιο κοινή μέθοδος είναι να χρησιμοποιήσετε τη βοήθεια που βασίζεται στα σχόλια. Αυτό σημαίνει ότι προσθέτουμε ένα επιπλέον μακρύ σχόλιο στην κορυφή του σεναρίου.
<#
.ΣΥΝΟΨΗ
Δείχνει πότε ξεκίνησε ο υπολογιστής σας.
.ΠΕΡΙΓΡΑΦΗ
Αυτή είναι μια λειτουργία περιτύλιξης WMI για να αποκτήσετε τον χρόνο που ξεκίνησε ο υπολογιστής σας.
.PARAMETER Όνομα_υπολογιστή
Το όνομα του υπολογιστή στον οποίο θέλετε να εκτελέσετε την εντολή.
.ΠΑΡΑΔΕΙΓΜΑ
Get-LastBootTime -ComputerName localhost
.ΣΥΝΔΕΣΜΟΣ
www.howtogeek.com
#>
Μόλις γίνει αυτό, θα πρέπει να καταλήξετε σε ένα σενάριο που μοιάζει με αυτό.
Ας πάμε τώρα και ελέγξτε το νέο μας αρχείο βοήθειας.
Αχ, φαίνομαι υπέροχα! Τώρα που το σενάριό μας είναι πλήρες, έχουμε ένα τελευταίο πράγμα που πρέπει να κάνουμε: δοκιμές. Για αυτό, θα βγώ έξω από το ISE και θα επιστρέψω στην κονσόλα PowerShell μόνο για να διασφαλίσουμε ότι δεν υπάρχουν ανωμαλίες.
Αν ξεκινάτε με ένα απλό στρώμα και απλά συνεχίζετε να το χτίζετε σαν αυτό που κάναμε σε αυτόν τον οδηγό, θα πάρετε το hang on του σε χρόνο μηδέν. Αυτό είναι όλο για τους ανθρώπους αυτού του χρόνου, θα σας δούμε στην επόμενη εγκατάσταση του Geek School.