PowerShell Kombinieren aller Werte eines Arrays
Hallo Forum.
Zunächst wünsche ich euch ein Frohes Neues Jahr und alles gute für 2025.
Ich bin auf der Suche nach einer Möglichkeit alle Werte eines Arrays zu kombinieren. Die Werte können jedoch auch Leerzeichen beinhalten. Leider habe ich im Netz keine Lösung für dieses Problem gefunden.
Dieses Array soll als Input verwendet werden:
Dieses Array sollte als Lösung herauskommen:
Es soll also keine Permutation rauskommen.
Egal was ich probiert habe wurde mir immer der String in zwei Werte gesplittet. Also @('Wert','1') für die weitere Berechnung der Kombinationen verwendet.
Hat hierfür jemand eine Lösung für diese Problem?
Zunächst wünsche ich euch ein Frohes Neues Jahr und alles gute für 2025.
Ich bin auf der Suche nach einer Möglichkeit alle Werte eines Arrays zu kombinieren. Die Werte können jedoch auch Leerzeichen beinhalten. Leider habe ich im Netz keine Lösung für dieses Problem gefunden.
Dieses Array soll als Input verwendet werden:
$Input = @('Wert 1','Wert 2','Wert 3')
Dieses Array sollte als Lösung herauskommen:
$Output = @(
@('Wert 1'),
@('Wert 1','Wert 2'),
@('Wert 1','Wert 2','Wert 3'),
@('Wert 1','Wert 3'),
@('Wert 1','Wert 3','Wert 2'),
@('Wert 2'),
@('Wert 2','Wert 1'),
@('Wert 2','Wert 1','Wert 3'),
@('Wert 2','Wert 3'),
@('Wert 2','Wert 3','Wert 1'),
@('Wert 3'),
@('Wert 3','Wert 1'),
@('Wert 3','Wert 1','Wert 2'),
@('Wert 3','Wert 2'),
@('Wert 3','Wert 2','Wert 1')
)
Es soll also keine Permutation rauskommen.
Egal was ich probiert habe wurde mir immer der String in zwei Werte gesplittet. Also @('Wert','1') für die weitere Berechnung der Kombinationen verwendet.
Hat hierfür jemand eine Lösung für diese Problem?
Please also mark the comments that contributed to the solution of the article
Content-ID: 670623
Url: https://administrator.de/forum/powershell-kombinieren-aller-werte-eines-arrays-670623.html
Printed on: January 14, 2025 at 06:01 o'clock
2 Comments
Latest comment
ChatGPT to the Rescue:
so oder so ähnlich
Edit: Okay es sortiert jetzt nicht rückwärts auch noch, das würde das ganze nochmal verlängern ...
Source: ChatGPT AI
# Funktion zur Generierung aller Kombinationen
function Get-Combinations {
param (
[array]$Array,
[array]$CurrentCombination = @(),
[ref]$Result = $(New-Object System.Collections.ArrayList)
)
# Wenn keine weiteren Elemente im Array sind
if ($Array.Count -eq 0) {
# Füge die aktuelle Kombination als Array zu den Resultaten hinzu
if ($CurrentCombination.Count -gt 0) {
[void]$Result.Value.Add(@($CurrentCombination))
}
return
}
# Erstes Element extrahieren
$firstElement = $Array[0]
$remainingArray = if ($Array.Count -gt 1) { $Array[1..($Array.Count - 1)] } else { @() }
# Mit dem aktuellen Element
Get-Combinations -Array $remainingArray -CurrentCombination ($CurrentCombination + $firstElement) -Result $Result
# Ohne das aktuelle Element
Get-Combinations -Array $remainingArray -CurrentCombination $CurrentCombination -Result $Result
}
# Eingabe-Array definieren
$Eingabe = @('Wert 1', 'Wert 2', 'Wert 3')
# Initialisiere das Ergebnis
$Result = [ref]$(New-Object System.Collections.ArrayList)
# Generiere Kombinationen
Get-Combinations -Array $Eingabe -Result $Result
# Filtere ungültige Einträge
$ValidResults = $Result.Value | Where-Object { $_ -ne $null -and $_.Count -gt 0 }
# Ergebnisse sortieren und ausgeben
$Output = $ValidResults | Sort-Object { $_.Count }
Write-Output "Alle Kombinationen:"
$Output | ForEach-Object { Write-Output ($_ -join ", ") }
so oder so ähnlich
Edit: Okay es sortiert jetzt nicht rückwärts auch noch, das würde das ganze nochmal verlängern ...