• Blog
  • Webinare
  • Partner
  • Support
  • Kontakt
  • DE
    • EN
ScriptRunner
  • Über uns
    • Team
    • Jobs
    • Presse
  • Warum
  • Praxisbeispiele
  • Software
    • ScriptRunner Server
    • ScriptRunner Portal
    • ScriptRunner Portal Widget
    • ScriptRunner Connectoren
    • ScriptRunner ActionPacks
  • Jetzt testen
  • Suche
  • Menü Menü
Du bist hier: Startseite1 / ScriptRunner Blog2 / News3 / Scripten in Dauerschleife: Einführung in PowerShell-Schleifen

Scripten in Dauerschleife: Einführung in PowerShell-Schleifen

Author: Adam Bertram | Lesezeit: 5 Minuten | Category: News, Scripting

Schleifen sind die Lebensader der meisten Programmiersprachen, und sie spielen eine integrale Rolle in jedem Code. Die Steuerung der Ausführung eines Programms, das über eine Reihe von Elementen iterieren soll, ist eine häufig auftretende Aufgabe.

PowerShell ist da keine Ausnahme und bietet eine Reihe verschiedener Schleifenoptionen und Möglichkeiten zur Steuerung der Codeausführung. Dieser Artikel gibt einen Überblick über die verschiedenen Arten von PowerShell-Schleifen und darüber, was Sie mit ihnen erreichen können.

Table of content

  • Welche PowerShell-Schleifen gibt es?
  • For-Schleife
  • Foreach-Schleife
  • ForEach-Object-Schleife
  • While-Schleife
  • Do-While-Schleife
  • Do-Until-Schleife
  • Fazit
Scripten in Dauerschleife: Einführung in PowerShell-Schleifen

Welche PowerShell-Schleifen gibt es?

  • For
  • ForEach-Object
  • Foreach
  • While
  • Do-While
  • Do-Until

Einige dieser Schleifen sind in ihrer Funktionsweise traditionell, während andere, wie ForEach-Object, nur in PowerShell und in der Funktionsweise der PowerShell-Objektpipeline vorkommen. Alle diese Schleifen haben ihren Platz und sind auf unterschiedliche Weise nützlich.

For-Schleife

Die For-Schleife ist eine der ersten Schleifen, deren Verwendung die meisten Programmierer erlernen. Sie wird normalerweise verwendet, um eine bestimmte Anzahl von Schritten durch eine Sammlung zu machen und den definierten Code bei jeder Iteration auszuführen. Die For-Schleife erfordert die Definition einer Iterator-Variablen mit einem Anfangswert, einer zu erfüllenden Bedingung, die die Schleife beendet, und die Angabe, wie die Iterator-Variable jedes Mal, wenn die Schleife ausgeführt wird, erhöht oder verringert werden kann. Hier ist ein Beispiel:

For ($i = 1; $i -LE 5; $i++) { 
		$i * 2 
		} 

# Output 
2, 4, 6, 8, 10

Diese einfache Schleife arbeitet mit der Variablen $i und multipliziert, wie Sie sehen können, einfach den Wert des Iterators bei jedem Durchlauf der Schleife mit 2.

Foreach-Schleife

Die Objektpipeline gibt es nur in der PowerShell-Scriptsprache. Sie ermöglicht eine höhere Flexibilität bei der Manipulation der Objekte, über die iteriert wird, jedoch mit dem Nachteil einer verlangsamten Leistung.

Um dem entgegenzuwirken, ermöglicht die foreach-Anweisung in PowerShell das Frontloading aller Elemente einer Sammlung von Objekten, über die iteriert werden soll, anstatt diese Objekte wie bei ForEach-Object einzustreamen. Dies bedeutet zwar eine höhere Speichernutzung, aber auch eine erhöhte Leistung. Hier ein Beispiel:

$Array = 1..5 Foreach ($Number In $Array) {
		$Number
		}
# Output
1, 2, 3, 4, 5

Eine nützliche Eigenschaft ist, dass Foreach mit einem Cmdlet verwendet werden kann, das eine Auflistung von Objekten zurückgibt. Eines der gängigsten Beispiele hierfür ist die Verwendung von Get-ChildItem zum Ausgeben einer Sammlung von Dateien.

$i = 1 Foreach ($File in Get-ChildItem) {
		"File {0}: {1}" -F $i, $File.FullName $i++ 
		} 
		
# Output 
File 1: C:TestFile1.txt 
File 2: C:TestFile2.txt

Eine weitere sehr nützliche Funktion ist die Möglichkeit, eine Zahl zu überspringen, indem sie die spezielle Funktion von $foreach.MoveNext() verwenden. Dies ermöglicht es Ihnen, die aktuelle Schleife zu überspringen und zum nächsten Wert überzugehen.

In diesem Beispiel sende ich die Ausgabe an Out-Null, da der zurückgegebene Standardwert true ist, und ich ihn somit nicht anzeigen möchte.

$Array = 1..20 
Foreach ($Number In $Array) {
		If ($Number % 2) { 
				$Foreach.MoveNext() | Out-Null 
				} 
		$Number 
} 
# Output

1, 3, 5, 7, 9, 11, 13, 15, 17, 19

ForEach-Object-Schleife

Wie in der Foreach-Schleife beschrieben, erwartet ForEach-Object einen Stream von Objekten aus der PowerShell-Pipeline. Diese Methode ist nicht ganz so schnell wie Foreach und bietet einige zusätzliche Funktionen, die ForEach-Object sehr flexibel machen.

Hierfür gibt es zwei Hauptgründe:

  • Fähigkeit Begin-, Prozess- und End-Blöcke zu nutzen
  • Streamen der resultierenden Objekte an Cmdlets weiter unten in der Pipeline
$Array = @("Item4", "Item2", "Item1", "Item3") $Array | ForEach-Object { "{0}.{1}" -F $_, "txt" } | Sort-Object # Output Item1.txt, Item2.txt, Item3.txt, Item4.txt

Wie oben erwähnt, ist die andere nützliche Funktion die Möglichkeit, einen Begin- und End-Block zusammen mit dem Standard-Prozessblock zu definieren.

$Array = @("Item4", "Item2", "Item1", "Item3")

$Array | ForEach-Object { $i = 0 } {
		"File {0}: {1}.{2}" -F $i, $_, "txt"
		$i++
} { Write-Host "Files Count: $i" }

# Output
File 0: Item4.txt
File 1: Item2.txt
File 2: Item1.txt
File 3: Item3.txt
Files Count: 4

While-Schleife

Die while-Schleife ist eine einfache PowerShell-Schleife, die fortgesetzt wird, solange die Bedingung wahr ist. Dies bedeutet auch, dass Sie potenziell Endlosschleifen erstellen können.

While ($Value -NE 3) { 
		$Value++ Write-Host "Value: $Value" 
		} 

#Output 
Value: 1 Value: 2 Value: 3

Ein Beispiel für eine Endlosschleife ist einfach eine Bedingung, die immer als wahr gewertet wird. Sie können dies durch den folgenden Code erreichen.

While ($True) { 
		"Das hier wird für immer laufen!" 
		} 

#Output 
Das hier wird für immer laufen!

Do-While-Schleife

Ähnlich wie bei einer while-Schleife hängt das Do-While-Konstrukt einfach einen Scriptblock an eine while-Schleife an, was bedeutet, dass das Script mindestens einmal ausgeführt wird, selbst wenn die while-Schleife beim nächsten oder ersten Durchlauf sofort als falsch gewertet wird.

Do { 
		Write-Host "Das hier wird immer angezeigt" 
		} While ($False) 
		
# Output
Das hier wird immer angezeigt

Do-Until-Schleife

Die Do-Until-Anweisung ist im Wesentlichen die Umkehrung von Do-While. Der Scriptblock wird mindestens ein Mal ausgeführt, maximal bis die Bedingung wahr wird.

Do { 
		Write-Host "This will display no matter what" 
		} Until ($True) 
		
# Output
This will display no matter what

Fazit

Wie Sie sehen können, gibt es viele nützliche Möglichkeiten, wie PowerShell-Schleifen verwendet und kombiniert werden können, um immer leistungsfähigere Scripts zu erstellen. Das Beherrschen von PowerShell-Schleifen erhöht garantiert den Nutzen von PowerShell und zeigt, wie es bei der Automatisierung selbst der komplexesten Aufgaben helfen kann.

Eine ganze Reihe von Beispielen finden Sie in den ScriptRunner ActionPacks. Diese gebrauchsfertigen und kostenlosen PowerShell-Scripte ermöglichen Ihnen die schnelle und einfache Umsetzung von zahlreichen Use Cases aus dem Bereich Systems Administration und IT Operations Management.

Share this article
  • Teilen auf Facebook
  • Teilen auf Twitter
  • Teilen auf WhatsApp
  • Teilen auf LinkedIn
  • Teilen auf Reddit
  • Per E-Mail teilen

Diese Beiträge könnten Sie auch interessieren:

Artikel: Drei beliebte PowerShell-Editoren im ÜberblickScriptRunner Software GmbH

Software-Spotlight: Drei beliebte PowerShell-Editoren im Überblick

10. Februar 2021
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2021/02/powershell-editors.gif 1000 1000 Adam Bertram https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Adam Bertram2021-02-10 10:00:152021-02-10 09:38:02Software-Spotlight: Drei beliebte PowerShell-Editoren im Überblick
Artikel: Weihnachts-Spaß mit PowerShell und ScriptRunnerScriptRunner Software GmbH

Weihnachts-Spaß mit PowerShell und ScriptRunner

23. Dezember 2020
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2020/12/xmas-fun-powershell.jpg 1000 1000 Bruno Buyck https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Bruno Buyck2020-12-23 10:00:352021-01-07 16:26:29Weihnachts-Spaß mit PowerShell und ScriptRunner
Artikelbild: PowerShell AliasingScriptRunner Software GmbH

PowerShell-Aliasing

2. Dezember 2020
Weiterlesen
https://www.scriptrunner.com/wp-content/uploads/2020/11/powershell-aliasing.png 1000 1000 Marco Kamner https://www.scriptrunner.com/wp-content/uploads/2018/05/ScriptRunner_Logo_RGB-300x45.png Marco Kamner2020-12-02 10:00:122021-01-07 16:34:30PowerShell-Aliasing

Über den Autor:

Adam Bertram
Adam Bertram

Adam ist seit über 20 Jahren im IT-Bereich tätig und ein erfahrener Online-Business-Profi. Er ist Unternehmer, IT-Influencer, Microsoft MVP, Blogger, Trainer, Autor und Content-Marketing-Autor für mehrere Technologieunternehmen.

Neuste Beiträge

  • Artikel: Citrix PVS-Maschinen mit PowerShell erstellenScriptRunner Software GmbHCitrix PVS-Maschinen mit PowerShell erstellen4. März 2021 - 9:00
  • ScriptRunner sponsert den Scottish Summit 2021ScriptRunner sponsert den Scottish Summit 202116. Februar 2021 - 10:00
  • Artikel: Drei beliebte PowerShell-Editoren im ÜberblickScriptRunner Software GmbHSoftware-Spotlight: Drei beliebte PowerShell-Editoren im Überblick10. Februar 2021 - 10:00
  • Article: ScriptRunner 2020R2ScriptRunner Software GmbHScriptRunner 2020R23. Februar 2021 - 12:00
  • Artikelbild: ScriptRunner, Azure und M365 – ein perfektes Trio, von Frank KresseScriptRunner Software GmbHScriptRunner, Azure und M365 – ein perfektes Trio27. Januar 2021 - 14:21

Produkt

  • ScriptRunner Plattform
  • ScriptRunner ActionPacks
  • ScriptRunner Server
  • ScriptRunner Portal
  • ScriptRunner Portal Widget
  • ScriptRunner Apps
  • ScriptRunner Connectoren
  • Lizenzierung
Jetzt kostenfrei testen

Lösungen

  • IT-Administratoren
  • IT-Teamleiter
  • Use Cases

Ressourcen

  • Blog
  • Dokumentation
  • Knowledge Base
  • Webinare
  • PowerShell-Lexicon
  • PowerShell-Poster
  • PowerShell Security Ebook

Unternehmen

  • Über uns
  • Team
  • Jobs
  • Presse
  • Referenzen
  • Partner

Kontakt

ScriptRunner Software GmbH
Ludwig-Erhard-Straße 2
76275 Ettlingen
Deutschland

T: +49 7243 20715-0
M: info(at)scriptrunner.com

Demo vereinbaren
© ScriptRunner Software GmbH is a subsidiary of AppSphere AG
  • LinkedIn
  • Xing
  • Twitter
  • Facebook
  • Youtube
  • Impressum
  • Datenschutz
  • Newsletter
Nach oben scrollen