Im Zuge meiner täglichen Arbeit an komplexen IT-Infrastrukturen und Automatisierungen entstehen nützliche kleine Helfer und Module. Ich teile diese Werkzeuge auf GitHub, um die Administration und Entwicklung für andere zu erleichtern.

Split-Array

PowerShell-Skript
Repository auf GitHub

Sequenzielle Verarbeitung großer Datenmengen kann lange dauern — gerade bei Cloud-APIs. Die Lösung ist Parallelisierung, und dafür müssen die Daten zuerst in Portionen (Chunks) zerlegt werden.

Damit dieses Rad nicht in jedem Skript neu erfunden wird, übernimmt Split-Array genau diesen Schritt: Es teilt ein Array in ein Array von Arrays — wahlweise nach maximaler Chunk-Größe oder in eine feste Anzahl von Chunks.

Klein, aber fein: Edge Cases sind berücksichtigt, die Eingabe funktioniert als Argument ebenso wie über die Pipeline.

EIN ARRAY · 8 ELEMENTE 1 2 3 4 5 6 7 8 Split-Array 1 2 3 4 5 6 7 8 ARRAY VON ARRAYS · 3 CHUNKS

Installation

Das Skript lässt sich per Dot-Sourcing direkt in der PowerShell-Sitzung oder im Profil laden:

. ./Split-Array.ps1

Die Bereitstellung als PowerShell-Modul ist für das nächste Release geplant.

Nutzungsbeispiele

1. Aufteilen nach maximaler Chunk-Größe (-ChunkSize)

Bestimmt, wie viele Elemente maximal in einem Unter-Array liegen dürfen. Ideal für API-Batches.

# Greedy-Verteilung (Standard): Füllt Chunks maximal auf
Split-Array -InputObject 1..10 -ChunkSize 3
# Ergebnis: (1,2,3), (4,5,6), (7,8,9), (10)

# Even-Verteilung: Verteilt den Rest gleichmäßig
Split-Array -InputObject 1..10 -ChunkSize 3 -Distribution Even
# Ergebnis: (1,2,3), (4,5,6), (7,8), (9,10)

2. Aufteilen in genau N Chunks (-MaxChunk)

Teilt das Array in eine feste Anzahl von Chunks auf.

# Even-Verteilung (Standard): Erzeugt exakt 4 ausgeglichene Chunks
Split-Array -InputObject 1..10 -MaxChunk 4
# Ergebnis: (1,2,3), (4,5,6), (7,8), (9,10)

Verteilungsstrategien

Vergleich der Verteilungsstrategien Greedy und Even
Strategie Verhalten Standard für
Greedy Füllt jeden Chunk bis zum Maximum; der letzte Chunk erhält den verbleibenden Rest. -ChunkSize
Even Verteilt den Rest elementweise auf die ersten Chunks; erzeugt immer exakt die gewünschte Anzahl an Chunks. -MaxChunk
In Vorbereitung

Weitere Module

Weitere PowerShell-Module zur Systemadministration und Automatisierung befinden sich in Vorbereitung und werden nach Fertigstellung hier veröffentlicht.