Διαφήμιση
Ένα κρίσιμο πρώτο βήμα η εκμάθηση προγραμματισμού λειτουργεί με βρόχους Τα απόλυτα βασικά του προγραμματισμού για αρχάριους (Μέρος 2)Στο μέρος 2 του απόλυτου οδηγού για αρχάριους για τον προγραμματισμό, θα καλύψω τα βασικά των συναρτήσεων, των τιμών επιστροφής, των βρόχων και των προϋποθέσεων. Βεβαιωθείτε ότι έχετε διαβάσει το μέρος 1 πριν το αντιμετωπίσετε, όπου εξήγησα το ... Διαβάστε περισσότερα . Ευτυχώς, το PowerShell συνεχίζει να μεγαλώνει με τις δεξιότητές σας.
Μπορείτε να πλαισιώσετε τις υπάρχουσες εντολές που χρησιμοποιείτε κάθε μέρα μέσα σε βρόχους για να εξοικονομήσετε χρόνο και προσπάθεια. Τα σενάρια σας κάνουν τη βαριά ανύψωση ενώ κάνετε το σημαντικό έργο της ανάγνωσης περισσότερων άρθρων στο MakeUseOf!
Powershell ForEach Loops: Η πόρτα για προηγμένο χειρισμό δεδομένων
Το ForEach είναι το ψευδώνυμο για το αντικείμενο ForEach. (Το ψευδώνυμο είναι απλώς μια συντόμευση για μια εντολή στο PowerShell.) Είναι καλή στιγμή να μιλήσουμε για τον τρόπο με τον οποίο το PowerShell διαχειρίζεται δεδομένα.
Όπως οι περισσότερες σύγχρονες γλώσσες προγραμματισμού, Το PowerShell είναι αντικειμενικό Από πού προήλθε το όνομα "Προσανατολισμένος" προγραμματισμός;Το Object Oriented δεν είναι απλώς μια τυχαία λέξη-κλειδί που ακούτε στους κύκλους προγραμματισμού. Υπάρχει ένας λόγος πίσω από το όνομα - αλλά τι; Ελάτε μαζί μου καθώς εξερευνούμαι μερικές από τις βασικές αρχές των εννοιών προγραμματισμού και εξηγώ ... Διαβάστε περισσότερα . Όλα στο PowerShell είναι ένα αντικείμενο, που σημαίνει ότι ακόμη και μεταβλητές έχουν εκτεταμένες ιδιότητες και λειτουργίες Powershell Cmdlets που θα βελτιώσουν τις δεξιότητες διαχειριστή των WindowsΤο Powershell είναι εργαλείο γραμμής εντολών ίσων μερών και γλώσσα scripting. Σας δίνει τη δυνατότητα να αυτοματοποιήσετε τον υπολογιστή σας με τις ίδιες εντολές που χρησιμοποιείτε για τη διαχείριση του. Διαβάστε περισσότερα . Αυτή η ιδιότητα είναι ο λόγος που μπορείτε να ορίσετε τις αναζητήσεις σας σε μια μεταβλητή και να καταλήξετε σε μια σειρά από τα αποτελέσματα.
$ yourVar = Get-ChildItem * foreach ($ $ σε $ yourVar) {Τα Βήματά σας. }
Σε ορισμένες γλώσσες, η επεξεργασία αυτού του πίνακα θα ήταν μια διαδικασία πολλαπλών βημάτων. Πρώτα, να πάρει το μήκος και στη συνέχεια να μετρήσει κάθε βήμα.
Στο PowerShell, μπαίνετε στον πίνακα και εκτελείτε τη δράση σε καθένα χρησιμοποιώντας το ForEach. Αυτό σας εξοικονομεί πολλές γραμμές κώδικα, κάτι που είναι χρήσιμο αν έχετε μεγαλύτερο σενάριο. Για παράδειγμα, το παρακάτω είναι ένα μικρό σενάριο που θα χρησιμοποιούσε μερικούς βρόχους Powershell ForEach. Δημιουργεί ένα αρχείο ZIP όλων των αρχείων σας που δεν έχετε ανοίξει σε 30 ημέρες.
Δημιουργία συστήματος αρχειοθέτησης αρχείων χρησιμοποιώντας ForEach Loops
Ας σπάσουμε τα βήματα. Εσυ χρησιμοποιεις Λήψη-ChildItem για να λάβετε όλα τα αρχεία στο φάκελο Έγγραφα. Η μεταβλητή περιβάλλοντος Τι είναι οι μεταβλητές περιβάλλοντος και πώς μπορώ να τις χρησιμοποιήσω; [Windows]Κάθε τόσο θα μαθαίνω μια μικρή συμβουλή που με κάνει να σκέφτομαι "καλά, αν το ήξερα πριν από ένα χρόνο τότε θα με είχε σώσει ώρες χρόνου". Θυμάμαι έντονα να μαθαίνω πώς να ... Διαβάστε περισσότερα $ env: USERPROFILE εκτελεί το σενάριο χρησιμοποιώντας το τρέχον προφίλ. Αυτή η μεταβλητή είναι πιο φορητή από μια διαδρομή με κωδικό κώδικα. Τα αποτελέσματα αυτής της αναζήτησης αντιστοιχίζονται στη μεταβλητή $ MyDocs. Στη συνέχεια, δημιουργούμε το βρόχο ForEach, έχοντας το βήμα σε κάθε ένα Έγγραφο $ σε $ MyDocs.
$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Εκφόρτωση. foreach ($ doc σε $ MyDocs) {if ($ doc. LastAccessTime -lt $ (Get-Date) .addDays (-30)) {$ oldDocs + = $ doc} } $ ArchiveFolder = New-Item -Path "$ ($ env: USERPROFILE) \ Documents \ $ ((Get-Date -Format MMddyy) .toString ())" -ItemType Directory. foreach ($ doc σε $ oldDocs) {Move-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder). Πλήρες όνομα) \ $ ($ doc. Όνομα) "-Επιβεβαιώστε $ false. } $ source = $ ArchiveFolder. Πλήρες όνομα. $ destination = "$ ($ env: USERPROFILE) \ Έγγραφα \ $ ($ ArchiveFolder. Όνομα) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory (πηγή $, προορισμός $) if (test-path $ destination) {Remove-Item -Path $ ArchiveFolder -Recurse -Επιβεβαίωση $ false. }
Μέσα στο βρόχο, ελέγχουμε για να δούμε αν κάθε αρχείο είναι LastAccessTime το ακίνητο είναι μεγαλύτερο από 30 ημέρες. Το παίρνουμε με το Ημερομηνία λήψης cmdlet και χρησιμοποιώντας το AddDays λειτουργία με αρνητικό τριάντα. Εάν είναι, προσθέτουμε το αρχείο στο $ myOldDocs πίνακας. Αφού ολοκληρωθεί η ταξινόμηση αρχείων, παίρνουμε τον ολοκληρωμένο πίνακα και δημιουργούμε ένα αρχείο zip. Αυτή η διαδικασία είναι λίγο πιο περίπλοκη καθώς περιλαμβάνει την επίκληση λίγο .NET. Μην ανησυχείτε αν δεν το καταλάβετε - μπορείτε να κλέψετε τον κωδικό από αυτό το έγγραφο βοήθειας TechNet.
Για να αναλύσουμε αυτό που συμβαίνει εδώ: Θα μετακινήσουμε όλα τα παλιά αρχεία μας σε έναν νέο κατάλογο που ονομάζεται για τη σημερινή ημερομηνία για παλαιότερες από 30 ημέρες. Μόλις δημιουργηθεί αυτός ο φάκελος, πρέπει να δημιουργήσουμε το αρχείο ZIP με το ίδιο όνομα. Θα δοκιμάσουμε για να βεβαιωθούμε ότι το αρχείο πέτυχε και το αρχείο .ZIP είναι εκεί και, στη συνέχεια, θα διαγράψουμε τον νέο φάκελο. Ορίστε αυτό ως προγραμματισμένη εργασία για εκτέλεση μία φορά το μήνα. Θα εξοικονομήσετε λίγο χώρο και θα διατηρήσετε καθαρό το φάκελο "Έγγραφα".
While and Do While: Βρόχοι σε κατάσταση
Εάν θέλετε να εκτελέσετε έναν βρόχο μόνο όταν πληρούται μια συγκεκριμένη συνθήκη, χρησιμοποιείτε έναν βρόχο While. Εάν χρησιμοποιείτε μια μεταβλητή για να παρακολουθείτε την καταμέτρηση, ορίστε την πρώτα.
i = 0. ενώ (i <10) {Τα βήματά σας i + = 1. }
Το πρόβλημα είναι ότι εάν δεν χρησιμοποιείτε μετρητή, ίσως θέλετε ο κώδικάς σας να εκτελείται τουλάχιστον μία φορά ακόμη και αν η δοκιμή είναι αληθινή. Αυτό ισχύει για το παρακάτω παράδειγμα. Έτσι σε αυτές τις περιπτώσεις, θέλετε να χρησιμοποιήσετε έναν βρόχο Do-While Πώς λειτουργούν οι βρόχοι Do-While στον προγραμματισμό υπολογιστώνΟι βρόχοι είναι ένας από τους πρώτους τύπους ελέγχου που θα μάθετε στον προγραμματισμό. Πιθανότατα γνωρίζετε για το καιρό για βρόχους, αλλά τι επιτυγχάνει ο βρόχος do-while; Διαβάστε περισσότερα . Η σύνταξη είναι ελαφρώς διαφορετική.
κάντε τα βήματά σας. } ενώ (Δήλωση υπό όρους)
Η χρήση αυτών δεν είναι τόσο προφανής για έναν αρχάριο προγραμματιστή. Κάνοντας τυπικό σενάριο μέρα με τη μέρα, μπορεί να μην τους συναντάτε τόσο συχνά. Όπου έρχονται ιδιαίτερα χρήσιμο είναι να φτιάξετε ένα προσωρινό χρονόμετρο για να δοκιμάσετε την επιτυχία μιας διαδικασίας.
Θα δημιουργήσουμε ένα γρήγορο σενάριο για επανεκκίνηση ενός απομακρυσμένου υπολογιστή και ειδοποίηση εάν δεν εμφανιστεί ξανά εντός 15 λεπτών. Αυτό το σενάριο προϋποθέτει ότι είναι οικιακός διακομιστής ή άλλο μηχάνημα που δεν κάνει επανεκκίνηση πολύ συχνά. Μη διστάσετε να προσαρμόσετε την ώρα εάν ο υπολογιστής σας εμφανίζεται συνήθως πιο γρήγορα.
Επανεκκίνηση και έλεγχος: Χρησιμοποιώντας ένα βρόχο Do-While
Αυτό το σενάριο είναι λίγο πιο απλό. Πρώτα, χρησιμοποιείτε το Επανεκκινήστε τον υπολογιστή εντολή για επανεκκίνηση του απομακρυσμένου μηχανήματος. (Χρησιμοποιήσαμε ένα εικονικό IP εδώ για τις εντολές επανεκκίνησης, φροντίστε να το αντικαταστήσετε με το DNS / IP του υπολογιστή σας). Στη συνέχεια, δημιουργήστε τη μεταβλητή μετρητή, Εγώ και ορίστε το στο 0. Στη συνέχεια, έχετε το Do loop με το Start-Sleep να σταματήσει το σενάριο για 300 δευτερόλεπτα (πέντε λεπτά). Μια δεύτερη εντολή προσθέτει μία στον μετρητή.
Επανεκκίνηση-Υπολογιστής -Ονομα υπολογιστή 127.0.0.1. i = 0. κάντε {Start-Sleep -Seconds 300 $ i + = 1. } ενώ ((! (Δοκιμή-σύνδεση 127.0.0.1-Ήσυχο)) -ή $ i -gt 3) εάν ($ i -gt 3) {Write-Ouput "Το τηλεχειριστήριο δεν αποκρίνεται, ελέγξτε." } αλλιώς {Γράψε-Έξοδος "Επανεκκινήθηκε με επιτυχία" }
Έπειτα έχουμε τα κριτήρια μας While. Χρησιμοποιούμε ένα τεστ Ή για να διασφαλίσουμε ότι μια αποτυχία δημιουργεί μια ειδοποίηση. Η εναλλακτική λύση είναι το σενάριο looping να περιμένει ασταμάτητα το απομακρυσμένο μηχάνημα. Για να ελέγξουμε το μηχάνημα, χρησιμοποιούμε το ΔΟΚΙΜΗ ΣΥΝΔΕΣΗΣ cmdlet. Για απλότητα, αυτό είναι το Ping for PowerShell. Προσθέτουμε την παράμετρο -Ησυχια που το αναγκάζει να επιστρέψει True ή False παρά τα αποτελέσματα των πακέτων. Το δεύτερο μέρος της δήλωσης Or ελέγχει εάν ο μετρητής είναι περισσότερος από τρεις.
Μόλις ολοκληρωθεί ο βρόχος, θέλουμε να δημιουργήσουμε την έξοδο. Αυτό σημαίνει ότι πρέπει να ελέγξουμε τον μετρητή μας. Αυτή είναι μια γρήγορη δήλωση if / else. Εάν είναι μεγαλύτερο από τρία, το σενάριο εξάγει ότι το απομακρυσμένο μηχάνημα δεν αποκρίνεται. Εάν δεν είναι, προκύπτει ότι η επανεκκίνηση ήταν επιτυχής.
Άλλοι βρόχοι
Υπάρχουν δύο άλλα είδη βρόχων διαθέσιμων στο PowerShell. Σχετίζονται κάπως με τους δύο προηγούμενους βρόχους, απλώς δεν χρησιμοποιούνται συνήθως. Το βρόχο For For λειτουργεί παρόμοιο με το παράδειγμα While. Ορίσατε όλα τα κριτήρια στην αξιολόγηση και, στη συνέχεια, ορίστε τα cmdlet σας.
για ($ i = 0; $ i -lt 10; $ i ++) {Τα βήματά σας. }
Οι βρόχοι Do Before είναι όπως οι βρόχοι Do While, αλλάζετε τη δήλωση While σε Έως. Στο παράδειγμα του σεναρίου, θα ήταν το ίδιο με τη συμπεριφορά. Είναι μια επιλογή στυλ, αλλά το Do While είναι πιο ευέλικτο σε άλλες καταστάσεις. Αν θυμάστε μόνο ένα, το Do While είναι πιο χρήσιμο.
Το PowerShell έχει βοήθεια και για κάθε έναν από αυτούς τους βρόχους. Μπορείτε να λάβετε τη βοήθεια προσθέτοντας σχετικά με πριν από το όνομα του βρόχου στο Get-Help. Στη συνέχεια, μπορείτε να δείτε παραδείγματα και άλλες συμβουλές για κάθε τύπο. Αυτά θα πρέπει να είναι χρήσιμα εάν κολλήσετε.
Συνεχίζοντας να μεγαλώνεις μαζί σου
Σε αυτό το σημείο, έχετε τις περισσότερες δεξιότητες για να ξεκινήσετε τη δημιουργία ισχυρών σεναρίων. Αν αυτοματοποίηση του σπιτιού σας 15 Προχωρημένες εργασίες που μπορεί να χειριστεί το PowerShell στα Windows 10Το PowerShell είναι παρόμοιο με τη γραμμή εντολών, αλλά καλύτερα. Είναι ένα ισχυρό εργαλείο διαχείρισης συστήματος. Έχουμε συγκεντρώσει 15 εργασίες, μερικές απλές, κάποιες πολύπλοκες, που επωφελούνται από τη μαγεία του PowerShell. Διαβάστε περισσότερα ή εξοικονομώντας χρόνο στη δουλειά, οι βρόχοι βοηθούν τα σενάρια σας να κάνουν περισσότερα. Συνδυάζοντας αυτούς τους βρόχους με Ο χειρισμός σφαλμάτων μετακινεί τη δέσμη ενεργειών σας πέρα από τα βασικά Αντιμετωπίστε σφάλματα PowerShell σαν αφεντικό με αυτές τις συμβουλέςΟ χειρισμός σφαλμάτων PowerShell έχει τέσσερα μέρη. Μάθετε πώς μπορείτε να διορθώσετε εάν υπάρχουν σφάλματα και περισσότερα στο Microsoft PowerShell. Διαβάστε περισσότερα . Αυτό ανοίγει την πόρτα σε πιο προηγμένες γλώσσες.
Τι είναι ένα έξυπνο σενάριο PowerShell που έχετε δημιουργήσει χρησιμοποιώντας βρόχους; Μοιραστείτε το μαζί μας στα σχόλια.
Ο Μάικλ δεν χρησιμοποίησε Mac όταν ήταν καταδικασμένοι, αλλά μπορεί να κωδικοποιήσει στο Applescript. Έχει πτυχία στην Πληροφορική και στα Αγγλικά. γράφει για λίγο Mac, iOS και βιντεοπαιχνίδια. και είναι ένας ημερήσιος πίθηκος πληροφορικής για πάνω από μια δεκαετία, ειδικεύεται στο σενάριο και στην εικονικοποίηση.