15Sep
Πριν από λίγες εβδομάδες, ο Geek σας έδειξε πώς μπορείτε να χρησιμοποιήσετε τη γραμμή εντολών για να βρείτε πότε τέθηκε σε λειτουργία ο υπολογιστής σας τελευταίος.Σε αυτήν την τελευταία εγκατάσταση του Geek School for PowerShell, πρόκειται να γράψουμε μια επαναχρησιμοποιήσιμη εντολή PowerShell για να κάνουμε το ίδιο πράγμα.
Να είστε βέβαιος να διαβάσετε τα προηγούμενα άρθρα της σειράς:
- Μάθετε πώς να αυτοματοποιήσετε τα Windows με το PowerShell
- Μάθετε πώς να χρησιμοποιείτε το Cmdlets στο PowerShell
- Μάθετε πώς να χρησιμοποιείτε αντικείμενα στο PowerShell
- Μάθετε πώς να χρησιμοποιείτε Remoting στο
- PowerShell
- Χρήση του PowerShell για λήψη πληροφοριών υπολογιστή
- Χρήση συλλογών σε PowerShell
- Μάθετε πώς να χρησιμοποιείτε θέσεις εργασίας στο PowerShell
- Μάθετε πώς να επεκτείνετε το PowerShell
- Μεταγλώττιση των μεταβλητών PowerShell, είσοδος και έξοδος
Γράφοντας το πρώτο σας script
Το πρώτο πράγμα που πρέπει να κάνουμε είναιβρείτε έναν τρόπο πρόσβασης στις πληροφορίες που αναζητούμε.Δεδομένου ότι έχουμε να κάνουμε με πληροφορίες διαχείρισης, ίσως χρειαστεί να ρίξουμε μια ματιά στη χρήση του WMI, το οποίο πράγματι έχει μια κλάση που ονομάζεται Win32_OperatingSystem και σας επιτρέπει να δείτε λεπτομερείς πληροφορίες για το λειτουργικό σας σύστημα, συμπεριλαμβανομένης της τελευταίας εκκίνησης.
Τώρα που ξέρουμε πού μπορούμε να βρούμε τις πληροφορίες που αναζητούμε, ανοίξτε το ISE και πληκτρολογήστε τα παρακάτω.
Get-WmiObject-Κλάση Win32_OperatingSystem-Όνομα υπολογιστή-χρήστη localhost |
Select-Object-Property CSName, LastBootUpTime
Σημείωση: Έπρεπε να χωρίσω τον κωδικό μου πάνω σε δύο γραμμές ώστε να ταιριάζει με το screenshot, αλλά μπορείτε να το πληκτρολογήσετε σε μία γραμμή.Αν επιλέξετε να το διαχωρίσετε σε δύο γραμμές, βεβαιωθείτε ότι ο χαρακτήρας σωλήνα είναι ο τελευταίος χαρακτήρας στη γραμμή 1.
Κάντε κλικ στο πράσινο κουμπί "Run Script" ή πατήστε το πλήκτρο F5 στο πληκτρολόγιό σας για να δοκιμάσετε τον κώδικα.
WMI φορές μπορεί να είναι λίγο κρυπτό.Με αυτό εννοούμε αν κοιτάζουμε την ιδιότητα LastBootUpTime, λέει το 2013-03-19 στις 18:26:21, αλλά για κάποιο λόγο οι τύποι WMI αποφάσισαν να συνενώσουν όλα αυτά σε μια μονή συμβολοσειρά.Ευτυχώς για εμάς, δεν χρειάζεται να ανησυχείτε για τη χειρωνακτική ανάλυση της συμβολοσειράς, καθώς υπάρχει ένας ευκολότερος τρόπος να το κάνετε, αν και πιο προηγμένος.Θα χρειαστεί να αλλάξετε το τμήμα Select-Object του κώδικα για να μοιάζετε με αυτό:
Select-Object -Property CSName, @{ n = "Last Booted";
Αυτό που κάνουμε εδώ είναι να δημιουργήσουμε μια προσαρμοσμένη ιδιότητα που ονομάζεται "Last Booted" και να καθορίσουμε ότι η τιμή της πρέπει να είναι το αποτέλεσμα της κλήσης του static ToDateTime( ASP.NET)στην ιδιότητα LastBootUpTime του τρέχοντος αντικειμένου αγωγού.Ο κωδικός σας θα πρέπει τώρα να μοιάζει με αυτό.
Η εκτέλεση του κώδικα τώρα θα δώσει πολύ πιο ευανάγνωστο χρόνο τελευταίας εκκίνησης.
Τώρα που είμαστε ικανοποιημένοι με τη βασική λειτουργικότητα του σεναρίου μας, πρέπει να το αποθηκεύσουμε.Για απλότητα, ας το αποθηκεύσουμε ως εξής:
C: \ Get-LastBootTime.ps1
Τώρα μεταβείτε στο κάτω μισό του ISE και εκτελέστε τα εξής:
C: \ Get-LastBootTime.ps1
Μεγάλη!Το σενάριό μας λειτουργεί όπως αναμένεται, ωστόσο υπάρχει ακόμα ένα πρόβλημα με το σενάριό μας.Εμείς hardcoded το όνομα του υπολογιστή που θέλουμε να πάρει την τελευταία ώρα εκκίνησης για.Αντί των τιμών σκληρού κώδικα, θα πρέπει να παράγουμε μια παράμετρο έτσι ώστε όποιος χρησιμοποιεί το σενάριο να μπορεί να επιλέξει τον υπολογιστή στον οποίο εκτελεί τη δέσμη ενεργειών.Για να το κάνετε αυτό, πηγαίνετε στην κορυφή της δέσμης ενεργειών σας και κάντε τα εξής.Παράμετρος
(
[συμβολοσειρά] $ ComputerName
)
Στη συνέχεια, αντικαταστήστε την τιμή hardcoded localhost με μεταβλητή $ ComputerName.Το σενάριό σας θα πρέπει τώρα να μοιάζει με αυτό:
Αποθηκεύστε το σενάριό σας, στη συνέχεια επιστρέψτε στο κάτω μισό του ISE και δείτε την βοήθεια για το σενάριό σας.
help C: \ Get-LastBootTime.ps1
Awesome, οπότε τώρα μπορούμε να καθορίσουμε το όνομα του υπολογιστή που θέλουμε να πάρουμε τον τελευταίο χρόνο εκκίνησης για τη χρήση της νέας παραμέτρου ComputerName.Δυστυχώς, εξακολουθούν να υπάρχουν λίγα πράγματα λανθασμένα.Πρώτον, η παράμετρος ComputerName είναι προαιρετική και δεύτερον, αυτό είναι το πιο άσχημο χρήσιμο που έχω δει ποτέ, οπότε ας λύσουμε αυτά τα θέματα γρήγορα.Για να καταστήσετε υποχρεωτική την παράμετρο ComputerName, αλλάξτε τα περιεχόμενα του block param στο ακόλουθο.
[Παράμετρος( Υποχρεωτικό = $ true)] [Συμβολοσειρά] $ ComputerName
Όσον αφορά την παραγωγή ενός καλύτερου αρχείου βοήθειας, η πιο κοινή μέθοδος είναι η χρήση βοήθειας με βάση τα σχόλια.Αυτό σημαίνει ότι προσθέτουμε ένα επιπλέον μακρύ σχόλιο στην κορυφή του σεναρίου.
& #
. SYNOPSIS
Δείχνει πότε ξεκίνησε ο υπολογιστής σας.
. DESCRIPTION
Αυτή είναι μια λειτουργία περιτύλιξης WMI για να έχετε τον χρόνο που ξεκίνησε ο υπολογιστής σας.
. PARAMETER Όνομα_υπολογιστή
Το όνομα του υπολογιστή στον οποίο θέλετε να εκτελέσετε την εντολή κατά.
. EXAMPLE
Get-LastBootTime -ComputerName τοπικόhost
. LINK
www.howtogeek.com
# & gt;
Μόλις γίνει αυτό, θα πρέπει να καταλήξετε σε ένα σενάριο που μοιάζει με αυτό.
Ας πάμε τώρα και ελέγξτε το νέο μας αρχείο βοήθειας.
Ας δούμε υπέροχα!Τώρα που το σενάριό μας είναι πλήρες, έχουμε ένα τελευταίο πράγμα που πρέπει να κάνουμε: δοκιμή.Γι 'αυτό, θα βγώ από το ISE και θα επιστρέψω στην κονσόλα PowerShell για να διασφαλίσουμε ότι δεν υπάρχουν ανωμαλίες.
Αν ξεκινάτε με μια απλή γραμματοκιβώτιο και απλά κρατάτε το κτίριο επάνω σε αυτό όπως κάναμε σε αυτόν τον οδηγό, θα πάρετε το hang of του σε χρόνο.Αυτό είναι όλο για τους ανθρώπους αυτού του χρόνου, θα σας δούμε στην επόμενη εγκατάσταση του Geek School.