Wie Powershell Foreach, While und andere Schleifen funktionieren

| Von

Powershell-Schleifen

Ein entscheidender erster Schritt beim Erlernen des Programmierens ist die Arbeit mit Schlupflöchern. Glücklicherweise wächst PowerShell mit Ihren Fähigkeiten.

Sie können die vorhandenen Befehle, die Sie täglich verwenden, in Schleifen einbinden, um Aufwand und Zeit zu sparen. Ihre Manuskripte machen das schwere Training, während Sie die wesentliche Aufgabe erledigen, mehr Beiträge auf virtualworldnews.de zu lernen!

Powershell ForEach Loops: Die Tür zu fortschrittlicher Datenverarbeitung

ForEach ist der Alias ​​für das ForEach-Objekt. (Ein Alias ​​ist einfach eine schnellere Möglichkeit für einen Befehl in PowerShell.) Dies ist ein guter Zeitpunkt, um darüber zu sprechen, wie PowerShell mit Informationen umgeht.

Wie die meisten modernen Programmiersprachen ist PowerShell objektorientiert. Jedes kleine Ding in PowerShell ist ein Ding, was bedeutet, dass auch Variablen verlängerte Eigenschaften und auch Funktionen haben. Diese Wohn- oder Gewerbeimmobilie ist der Grund, warum Sie Ihre Suche auf eine Variable festlegen und mit einer Vielzahl von Ergebnissen enden können.

$yourVar = Get-ChildItem *
foreach ($file in $yourVar){
Your Steps
}

In einigen Sprachen wäre die Verarbeitung dieses Bereichs ein mehrstufiger Prozess. Zuerst die Größe ermitteln und dann jede Aktion hochzählen.

In PowerShell gehen Sie über die Auswahl und führen die Aktion auch mit ForEach auf jedem aus. Dadurch sparen Sie mehrere Zeilen Code, was praktisch ist, wenn Sie ein längeres Skript erhalten haben. Das Anhängen an ist beispielsweise ein kleines Skript, das sicherlich eine Reihe von Powershell-ForEach-Schleifen verwenden würde. Es entwickelt ein ZIP-Archiv all Ihrer Dateien, die Sie in 30 Tagen nicht geöffnet haben.

Erstellen eines Dateiarchivsystems mit ForEach-Schleifen

Lassen Sie uns die Aktionen herunterbrechen. Sie verwenden Get-ChildItem um alle Daten im Ordner Dokumente abzurufen. Die Einstellvariable $env: BENUTZERPROFIL führt das Skript unter Verwendung des aktuellen Kontos aus. Diese Variable ist viel portabler als ein hartcodierter Pfad. Die Ergebnisse dieser Suche werden der Variablen zugewiesen $MyDocs Wir erstellen dann unser ForEach-Lücke, indem wir es mit jedem kippen $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.FullName)$($doc.Name)" -Confirm $false
}
$source = $ArchiveFolder.FullName
$destination = "$($env:USERPROFILE)Documents$($ArchiveFolder.Name).zip"
Add-Type -AssemblyName "system.io.compression.filesystem"
::CreateFromDirectory($source, $destination)
if(test-path $destination){
Remove-Item -Path $ArchiveFolder -Recurse -Confirm $false
}

Innerhalb der Lücke prüfen wir, ob die einzelnen Dokumente each LastAccessTime Wohn- oder Gewerbeimmobilien älter als 30 Tage sind. Das bekommen wir mit dem Verabredung bekommen Cmdlet und verwenden Sie die AddDays Merkmal mit nachteiligen dreißig. Wenn dies der Fall ist, fügen wir die Datei in die $myOldDocs Auswahl. Nachdem die Art der Dokumente abgeschlossen ist, nehmen wir unser fertiges Array und erstellen eine ZIP-Datei. Dieses Verfahren ist etwas komplizierter, da es ein wenig .NET aufruft. Mach dir keinen Stress, wenn du es nicht eher merkst – du kannst den Code von stehlen dieses TechNet-Hilfsdokument

Um aufzuschlüsseln, was unten passiert: Wir werden alle unsere alten Dateien in ein brandneues Verzeichnis verschieben, das für den heutigen Tag, der älter als 30 Tage ist, aufgerufen wird. Wenn dieser Ordner erstellt wird, müssen wir das gleichnamige ZIP-Archiv entwickeln. Wir werden überprüfen, ob das Archiv gut funktioniert hat und auch die .ZIP-Daten vorhanden sind, und danach den brandneuen Ordner entfernen. Legen Sie dies als geplanten Job fest, der einmal im Monat ausgeführt wird. Sie sparen sich einen kleinen Bereich und halten Ihren Dokumentenordner sauber.

While und Do While: Schleifen unter Bedingung

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 das Hochzählen zu verfolgen, stellen Sie dies zunächst fest.

i=0
while(i<10){
Your Steps
i+=1
}

Das Problem ist, dass Sie, wenn Sie keinen Zähler verwenden, möglicherweise möchten, dass Ihr Code zumindest dann ausgeführt wird, wenn die Prüfung wahr ist. Dies ist bei dem folgenden Instanzmanuskript der Fall. In diesen Fällen möchten Sie also eine Do-While-Schleife verwenden. Die Syntax ist etwas anders.

do{
Your Steps
}while(Conditional Statement)

Diese zu verwenden ist für einen Anfänger-Designer nicht ganz so offensichtlich. Wenn Sie alltägliches Skripting ausführen, werden Sie ihnen möglicherweise nicht so häufig begegnen. Wo sie besonders nützlich sind, ist es, einen provisorischen Timer zum Testen des Erfolgs eines Verfahrens zu erstellen.

Wir werden ein schnelles Manuskript erstellen, um einen Remote-Rechner neu zu starten und zu warnen, wenn er nicht innerhalb von 15 Minuten wieder hochfährt. Diese Situation setzt voraus, dass es sich um einen hauseigenen Webserver oder ein anderes Gerät handelt, das nicht wirklich häufig neu gestartet wird. Zögern Sie nicht, die Uhrzeit zu ändern, wenn Ihr Computer normalerweise viel schneller hochfährt.

Sowohl neu starten als auch prüfen: Verwenden einer Do-While-Schleife

Dieses Skript ist etwas einfacher. Zuerst verwenden Sie die Starte den Computer neu Befehl, um den Remote-Rechner neu zu starten. (Wir haben hier eine Dummy-IP für die Neustartbefehle verwendet, stellen Sie sicher, dass Sie diese mit der DNS/IP Ihres Computersystems überschreiben). Erzeuge dann die Zählervariable, ich und stellen Sie es auf 0 ein. Als nächstes haben Sie Ihre Do-Schleife mit Start-Sleep, die das Skript für 300 Sekunden (fünf Minuten) beendet. Ein 2. Befehl fügt dem Zähler eins hinzu.

Restart-Computer -ComputerName 127.0.0.1
i=0
do{
Start-Sleep -Seconds 300
$i += 1
}while((!(Test-Connection 127.0.0.1 -Quiet)) -or $i -gt 3)
if($i -gt 3){
Write-Ouput "Remote Machine not responding, please check."
}
else{
Write-Output "Reboot Succeeded"
}

Dann haben wir unsere While-Standards. Wir verwenden eine Oder-Prüfung, um sicherzustellen, dass ein Fehler eine Warnung auslöst. Die Wahl ist das Manuskript-Looping, das endlos auf die entfernte Ausrüstung wartet. Um die Ausrüstung zu überprüfen, verwenden wir die Testverbindung Cmdlet. Der Einfachheit halber ist dies Ping für PowerShell. Wir fügen die Spezifikation hinzu -Ruhig was es zwingt, True oder False zurückzugeben, anstatt die Ergebnisse der Pakete. Die zweite Komponente der Or-Anweisung prüft, ob der Zähler größer als 3 ist.

Wenn das Schlupfloch endet, beabsichtigen wir, das Ergebnis zu entwickeln. Das legt nahe, dass wir unseren Zähler überprüfen müssen. Dies ist eine schnelle if/else-Anweisung. Wenn es mehr als drei sind, gibt das Manuskript aus, dass das Remote-Gerät nicht reagiert. Ist dies nicht der Fall, wird ausgegeben, dass der Neustart erfolgreich war.

Andere Schleifen

Es gibt 2 weitere Arten von Schlupflöchern in PowerShell. Sie beziehen sich etwas auf die vorherigen 2 Schleifen, sie werden nur nicht wie allgemein verwendet. Eine For-Schleife funktioniert ähnlich wie das While-Beispiel. Sie legen jeden Ihrer Standards in der Prüfung fest, danach legen Sie Ihre Cmdlets fest.

for($i = 0;$i -lt 10;$i++){
Your Steps
}

Do Until-Schleifen sind wie Do While-Schleifen, Sie wandeln einfach die While-Deklaration in Until um. Im Instanzskript würde es bezüglich Aktionen übereinstimmen. Es ist eine Designoption, aber Do While ist in anderen Szenarien viel flexibler. Wenn Sie also nur eines im Hinterkopf behalten, ist Do While besser.

Powershell-Foreach-Schleifen

PowerShell bietet auch Hilfe für jede dieser Schleifen. Sie können die Hilfe erhalten, indem Sie einschließen hinsichtlich vor dem Schleifennamen in Get-Help. Sie können dann Beispiele und auch andere Vorschläge für jeden Typ sehen. Diese müssen praktisch sein, wenn Sie stecken bleiben.

Weiter mit dir wachsen

An diesem Punkt haben Sie die meisten Fähigkeiten, um mit dem Erstellen robuster Skripte zu beginnen. Egal, ob Sie Ihr Hausgerät automatisieren oder am Arbeitsplatz Zeit sparen, Schlupflöcher helfen Ihren Manuskripten, mehr zu tun. Kombinieren Sie diese Lücken mit Fehlern, indem Sie sich um Schritte kümmern, die Ihr Skripting über das Wesentliche hinausgeht. Dadurch werden erweiterte Sprachen freigeschaltet.

Was ist ein brillantes PowerShell-Skript, das Sie mit Schlupflöchern erstellt haben? Teilen Sie es uns in den Bemerkungen mit.

Sie können die vorhandenen Befehle, die Sie täglich verwenden, in Schleifen einbinden, um sowohl Zeit als auch Mühe zu sparen. Wenn Sie eine Schleife nur ausführen möchten, wenn eine bestimmte Bedingung erfüllt ist, verwenden Sie ein While-Loophole. In diesen Fällen möchten Sie eine Do-While-Lücke verwenden. Do Until-Schleifen sind wie Do While-Schleifen, Sie ändern einfach die While-Deklaration in Until. Was ist ein cleveres PowerShell-Manuskript, das Sie mit Schleifen erstellt haben?

Klicken Sie, um diesen Beitrag zu bewerten!
[Gesamt: 0 Durchschnitt: 0]

Andere verwandte Artikel

Python kostenlos lernen

Pythons Popularität hat in der aktuellen Zeit tatsächlich einen erheblichen Boom erlebt, und das aus gutem Grund. Die Syntax von…

Schreibe einen Kommentar