Werbung
Ein entscheidender erster Schritt in Programmieren lernen funktioniert mit Schleifen Die absoluten Grundlagen der Programmierung für Anfänger (Teil 2)In Teil 2 unseres absoluten Anfängerleitfadens zur Programmierung werde ich die Grundlagen von Funktionen, Rückgabewerten, Schleifen und Bedingungen behandeln. Stellen Sie sicher, dass Sie Teil 1 gelesen haben, bevor Sie sich mit diesem Thema befassen. Weiterlesen . Zum Glück wächst PowerShell mit Ihren Fähigkeiten weiter.
Sie können die vorhandenen Befehle, die Sie täglich verwenden, in Schleifen einrahmen, um Zeit und Mühe zu sparen. Ihre Skripte erledigen das schwere Heben, während Sie die wichtige Arbeit erledigen, mehr Artikel auf MakeUseOf zu lesen!
Powershell ForEach Loops: Die Tür zum erweiterten Datenhandling
ForEach ist der Alias für das ForEach-Objekt. (Ein Alias ist lediglich eine Verknüpfung für einen Befehl in PowerShell.) Dies ist ein guter Zeitpunkt, um über die Art und Weise zu sprechen, wie PowerShell Daten verarbeitet.
Wie die meisten modernen Programmiersprachen PowerShell ist objektorientiert Woher hat die "objektorientierte" Programmierung ihren Namen?Objektorientiert ist nicht nur ein zufälliges Schlagwort, das Sie in Programmierkreisen hören. Es gibt einen Grund für den Namen - aber was? Erforschen Sie mit mir einige der Grundlagen von Programmierkonzepten und erklären Sie ... Weiterlesen . Alles in PowerShell ist ein Objekt, dh auch Variablen haben erweiterte Eigenschaften und Funktionen Powershell-Cmdlets, die Ihre Windows-Administratorfähigkeiten verbessernPowershell ist zu gleichen Teilen ein Befehlszeilen-Tool und eine Skriptsprache. Sie können Ihren Computer über dieselben Befehle automatisieren, mit denen Sie ihn verwalten. Weiterlesen . Mit dieser Eigenschaft können Sie Ihre Suche auf eine Variable festlegen und erhalten ein Array mit den Ergebnissen.
$ yourVar = Get-ChildItem * foreach ($ file in $ yourVar) {Deine Schritte. }
In einigen Sprachen wäre die Verarbeitung dieses Arrays ein mehrstufiger Prozess. Zuerst die Länge ermitteln und dann jeden Schritt hochzählen.
In PowerShell durchlaufen Sie das Array und führen die Aktion für jedes Array mit ForEach aus. Dadurch sparen Sie mehrere Codezeilen. Dies ist hilfreich, wenn Sie ein längeres Skript haben. Das folgende Skript ist beispielsweise ein kleines Skript, das einige Powershell ForEach-Schleifen verwendet. Es wird ein ZIP-Archiv aller Ihrer Dateien erstellt, die Sie seit 30 Tagen nicht mehr geöffnet haben.
Erstellen eines Dateiarchivsystems mit ForEach-Schleifen
Lassen Sie uns die Schritte aufschlüsseln. Sie verwenden Get-ChildItem um alle Dateien im Ordner "Dokumente" abzurufen. Die Umgebungsvariable Was sind Umgebungsvariablen und wie kann ich sie verwenden? [Windows]Hin und wieder lerne ich einen kleinen Tipp, der mich zum Nachdenken bringt: "Wenn ich das vor einem Jahr gewusst hätte, hätte es mir Stunden Zeit gespart." Ich erinnere mich lebhaft daran, wie man ... Weiterlesen $ env: USERPROFILE führt das Skript mit dem aktuellen Profil aus. Diese Variable ist portabler als ein fest codierter Pfad. Die Ergebnisse dieser Suche werden der Variablen zugewiesen $ MyDocs. Wir erstellen dann unsere ForEach-Schleife, indem wir sie jeweils durchlaufen lassen $ Doc in $ MyDocs.
$ oldDocs = @ () $ MyDocs = Get-ChildItem -Path "$ ($ env: USERPROFILE) \ Documents" -Recurse. foreach ($ doc in $ 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 in $ oldDocs) {Move-Item -Path $ doc. FullName -Destination "$ ($ ArchiveFolder. Vollständiger Name) \ $ ($ doc. Name) "-Confirm $ false. } $ source = $ ArchiveFolder. Vollständiger Name. $ destination = "$ ($ env: USERPROFILE) \ Documents \ $ ($ ArchiveFolder. Name) .zip " Add-Type -AssemblyName "system.io.compression.filesystem" [io.compression.zipfile]:: CreateFromDirectory ($ source, $ destination) if (Testpfad $ Ziel) {Remove-Item -Path $ ArchiveFolder -Recurse -Confirm $ false. }
Innerhalb der Schleife prüfen wir, ob die einzelnen Dateien vorhanden sind LastAccessTime Eigentum ist älter als 30 Tage. Wir bekommen das mit dem Verabredung bekommen Cmdlet und mit dem AddDays Funktion mit negativen dreißig. Wenn ja, fügen wir die Datei dem hinzu $ myOldDocs Array. Nachdem die Dateisortierung abgeschlossen ist, nehmen wir unser fertiges Array und erstellen eine Zip-Datei. Dieser Vorgang ist etwas komplizierter, da ein wenig .NET aufgerufen wird. Machen Sie sich keine Sorgen, wenn Sie es nicht ganz verstehen - Sie können den Code stehlen Dieses TechNet-Hilfedokument.
Um aufzuschlüsseln, was hier passiert: Wir werden alle unsere alten Dateien in ein neues Verzeichnis verschieben, das für das heutige Datum für mehr als 30 Tage benannt ist. Sobald dieser Ordner erstellt ist, müssen wir das gleichnamige ZIP-Archiv erstellen. Wir werden testen, ob das Archiv erfolgreich war und die ZIP-Datei vorhanden ist, und dann den neuen Ordner löschen. Legen Sie dies als geplante Aufgabe fest, die einmal im Monat ausgeführt werden soll. Sie sparen sich ein wenig Platz und halten Ihren Dokumentenordner sauber.
While und Do While: Schleifen unter bestimmten Bedingungen
Wenn Sie eine Schleife nur ausführen möchten, wenn eine bestimmte Bedingung erfüllt ist, verwenden Sie eine While-Schleife. Wenn Sie eine Variable verwenden, um die Anzahl zu verfolgen, legen Sie diese zuerst fest.
i = 0. while (i <10) {Deine Schritte i + = 1. }
Das Problem ist, dass wenn Sie keinen Zähler verwenden, Ihr Code möglicherweise mindestens einmal ausgeführt werden soll, selbst wenn der Test wahr ist. Dies ist beim folgenden Beispielskript der Fall. Also in diesen Fällen Sie möchten eine Do-While-Schleife verwenden Funktionsweise von Do-While-Schleifen in der ComputerprogrammierungSchleifen sind einer der ersten Steuertypen, die Sie beim Programmieren lernen. Sie kennen wahrscheinlich while- und for-Schleifen, aber was leistet eine do-while-Schleife? Weiterlesen . Die Syntax ist etwas anders.
mache {deine Schritte. } while (Bedingte Anweisung)
Die Verwendung dieser ist für einen unerfahrenen Programmierer nicht ganz so offensichtlich. Wenn Sie typische Skripte für den täglichen Gebrauch ausführen, werden Sie möglicherweise nicht so oft darauf stoßen. Besonders nützlich ist es, einen provisorischen Timer zu erstellen, um den Erfolg eines Prozesses zu testen.
Wir werden ein schnelles Skript erstellen, um einen Remotecomputer neu zu starten und zu benachrichtigen, wenn es nicht innerhalb von 15 Minuten wieder hochgefahren wird. In diesem Szenario wird davon ausgegangen, dass es sich um einen Heimserver oder einen anderen Computer handelt, der nicht sehr oft neu gestartet wird. Sie können die Zeit jederzeit anpassen, wenn Ihr Computer normalerweise schneller hochfährt.
Neustart und Überprüfung: Verwenden einer Do-While-Schleife
Dieses Skript ist etwas einfacher. Zuerst verwenden Sie die Starte den Computer neu Befehl zum Neustarten des Remotecomputers. (Wir haben hier eine Dummy-IP für die Neustartbefehle verwendet. Überschreiben Sie diese unbedingt mit der DNS / IP Ihres Computers.) Dann erstellen Sie die Zählervariable, ich und setze es auf 0. Als nächstes haben Sie Ihre Do-Schleife mit Start-Sleep, die das Skript für 300 Sekunden (fünf Minuten) stoppt. Ein zweiter Befehl fügt dem Zähler einen hinzu.
Restart-Computer -ComputerName 127.0.0.1. i = 0. do {Start-Sleep-Sekunden 300 $ i + = 1. } while ((! (Test-Connection 127.0.0.1 -Quiet)) -oder $ i -gt 3) if ($ i -gt 3) {Write-Ouput "Remote-Maschine antwortet nicht, bitte überprüfen." } else {Write-Output "Neustart erfolgreich" }
Dann haben wir unsere While-Kriterien. Wir verwenden einen Or-Test, um sicherzustellen, dass ein Fehler eine Warnung generiert. Die Alternative ist die Skriptschleife, die endlos auf den Remotecomputer wartet. Um nach der Maschine zu suchen, verwenden wir die Testverbindung Cmdlet. Der Einfachheit halber ist dies Ping für PowerShell. Wir fügen den Parameter hinzu -Ruhig Dies zwingt es, True oder False anstelle der Ergebnisse der Pakete zurückzugeben. Der zweite Teil der Or-Anweisung prüft, ob der Zähler mehr als drei beträgt.
Sobald die Schleife abgeschlossen ist, möchten wir die Ausgabe erstellen. Das bedeutet, dass wir unseren Zähler überprüfen müssen. Dies ist eine schnelle if / else-Anweisung. Wenn es größer als drei ist, gibt das Skript aus, dass der Remotecomputer nicht reagiert. Ist dies nicht der Fall, wird ausgegeben, dass der Neustart erfolgreich war.
Andere Schleifen
In PowerShell stehen zwei weitere Arten von Schleifen zur Verfügung. Sie haben etwas mit den beiden vorherigen Schleifen zu tun, sie werden einfach nicht so häufig verwendet. Eine For-Schleife funktioniert ähnlich wie das While-Beispiel. Sie legen alle Ihre Kriterien in der Auswertung fest und legen dann Ihre Cmdlets fest.
für ($ i = 0; $ i -lt 10; $ i ++) {Deine Schritte. }
Do Until-Schleifen sind wie Do While-Schleifen. Sie ändern einfach die While-Anweisung in Until. Im Beispielskript wäre es hinsichtlich des Verhaltens dasselbe. Es ist eine Stilwahl, aber das Do While ist in anderen Situationen vielseitiger. Wenn Sie sich also nur an eine erinnern, ist Do While nützlicher.
PowerShell bietet auch Hilfe für jede dieser Schleifen. Sie können die Hilfe erhalten, indem Sie hinzufügen Über vor dem Schleifennamen in Get-Help. Sie können dann Beispiele und andere Tipps für jeden Typ sehen. Diese sollten hilfreich sein, wenn Sie nicht weiterkommen.
Mit Ihnen weiter wachsen
Zu diesem Zeitpunkt verfügen Sie über die meisten Fähigkeiten, um robuste Skripte zu erstellen. Ob Automatisierung Ihres Heimgeräts 15 Erweiterte Aufgaben PowerShell kann unter Windows 10 ausgeführt werdenPowerShell ähnelt der Eingabeaufforderung, ist jedoch besser. Es ist ein leistungsstarkes Systemadministrationstool. Wir haben 15 Aufgaben zusammengestellt, einige einfache, andere komplexe, die von der Magie von PowerShell profitieren. Weiterlesen Wenn Sie bei der Arbeit Zeit sparen, helfen Loops Ihren Skripten, mehr zu tun. Kombinieren Sie diese Schleifen mit Durch die Fehlerbehandlung werden Ihre Skripte über die Grundlagen hinaus verschoben Behandeln Sie PowerShell-Fehler wie ein Boss mit diesen TippsDie PowerShell-Fehlerbehandlung besteht aus vier Teilen. Erfahren Sie, wie Sie Fehler und mehr in Microsoft PowerShell beheben können. Weiterlesen . Dies öffnet die Tür zu fortgeschritteneren Sprachen.
Was ist ein cleveres PowerShell-Skript, das Sie mithilfe von Schleifen erstellt haben? Teile es uns in den Kommentaren mit.
Michael hat keinen Mac benutzt, als sie zum Scheitern verurteilt waren, aber er kann in Applescript codieren. Er hat Abschlüsse in Informatik und Englisch; Er schreibt schon seit einiger Zeit über Mac, iOS und Videospiele. und er ist seit über einem Jahrzehnt ein IT-Affe am Tag, der sich auf Skripte und Virtualisierung spezialisiert hat.