Powershell Gruppieren Auflisten in neue Spalte
Aloa in die Runde,
mit folgendem Schnipsel hole ich mir alle Informationen die ich brauche aus einer historischen Datenhalde.
Jetzt war der Wunsch neben den Pfaden auch noch neben Pfad und Version auch die Namen aller Clients zu haben.
Also den Dateinamen mit dran gezimmert.
Soweit so gut.
Jetzt klemmt es an der Stelle folgendes zu erhalten:
Gruppieren nach Pfad alles gut und den Count bekomme ich auch hin, aber wie kann ich die RechnerNamen zusammensammeln und an den passenden Pfad einfügen?
Grüße in die Runde
mit folgendem Schnipsel hole ich mir alle Informationen die ich brauche aus einer historischen Datenhalde.
$PSCustomResult = @()
gci -Path "D:\_Erfassung_gefiltert" -Filter "*.json"| % { $DateiName = (($_.Name).Split("_"))[0] ; Get-Content -Raw $_.FullName | ConvertFrom-Json |Get-ObjectMembers | Where-Object Key -Match "VersionInfo" | %{
$_.Value |
%{
$rc = New-Object PSObject
$rc | Add-Member -type NoteProperty -name Pfad -Value $_.Filename
$rc | Add-Member -type NoteProperty -name Version -Value $_.FileVersion
$PSCustomResult += $rc
Remove-Variable rc
}
}
}
$PSCustomResult |
Group-Object Pfad, Version |
Select-Object count, @{N='Name';E={$_.Name}}, @{N='Version';E={$_.Name.Split(",")[1]}} |
Sort-Object -Property Name -Descending |
Export-Csv "D:\_Erfassung\_Erfassung_JsonResult_CSV\Ergebnis.csv" -NoTypeInformation -Delimiter ";"
Jetzt war der Wunsch neben den Pfaden auch noch neben Pfad und Version auch die Namen aller Clients zu haben.
Also den Dateinamen mit dran gezimmert.
$PSCustomResult = @()
$DateiName = ""
gci -Path "D:\_Erfassung_gefiltert" -Filter "*.json"| % { $DateiName = $_.Name ; Get-Content -Raw $_.FullName | ConvertFrom-Json |Get-ObjectMembers | Where-Object Key -Match "VersionInfo" | %{
$_.Value |
%{
$rc = New-Object PSObject
$rc | Add-Member -type NoteProperty -name Pfad -Value $_.Filename
$rc | Add-Member -type NoteProperty -name Version -Value $_.FileVersion
$rc | Add-Member -type NoteProperty -name RechnerName -Value $DateiName
$PSCustomResult += $rc
Remove-Variable rc
}
}
$DateiName = ""
}
Soweit so gut.
Pfad Version RechnerName
C:\Program Files (x86)\Java\jre1.8.0_401\bin\java.exe 8.0.4010.10 Rechner1
C:\Program Files\Oracle\Oracle.121\jdk\bin\java.exe 6.0.750.13 Rechner1
C:\Program Files\PDF24\jre\bin\java.exe 17.0.10.0 Rechner1
C:\Program Files\Oracle\Oracle.121\jdk\bin\java.exe 6.0.750.13 Rechner2
C:\Program Files\PDF24\jre\bin\java.exe 17.0.10.0 Rechner2
C:\Program Files (x86)\Java\jre1.8.0_401\bin\java.exe 8.0.4010.10 Rechner2
C:\Program Files\Oracle\Oracle.121\jdk\bin\java.exe 6.0.750.13 Rechner3
Jetzt klemmt es an der Stelle folgendes zu erhalten:
Count Pfad Version Rechner
2 C:\Program Files (x86)\Java\jre1.8.0_401\bin\java.exe 8.0.4010.10 Rechner1;Rechner2
3 C:\Program Files\Oracle\Oracle.121\jdk\bin\java.exe 6.0.750.13 Rechner1;Rechner2;Rechner3
2 C:\Program Files\PDF24\jre\bin\java.exe 17.0.10.0 Rechner1;Rechner2
Gruppieren nach Pfad alles gut und den Count bekomme ich auch hin, aber wie kann ich die RechnerNamen zusammensammeln und an den passenden Pfad einfügen?
Grüße in die Runde
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 673210
Url: https://administrator.de/forum/powershell-gruppieren-json-gruppierung-673210.html
Ausgedruckt am: 07.06.2025 um 03:06 Uhr
2 Kommentare
Neuester Kommentar