EmmKay's post in PowerShell - Frage zu Group-Object wurde als beste Lösung markiert.
5. April 2024
Die gewünschte Ausgabe habe ich oben sehr unglücklich dargestellt. Die Daten, die in der Spalte Informationen sind, sollen pro Programm in einer Zelle gespeichert werden. Dabei ist das Trennzeichnen der einzelnen Informationen völlig egal.
Die Lösung liegt auf der Hand. Einfach ein HashTable benutzen .
class Software {
[string]$Datei
[string]$Verzeichnis
[string]$Computer
[string]$Benutzer
[DateTime]$StartZeit
}
$ht = @{}
@(
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC001';Benutzer='1234';StartZeit='07:15'}
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='08:40'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='10:20'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC002';Benutzer='5678';StartZeit='10:20'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:SystemDrive)\Project1\";Computer='PC003';Benutzer='9090';StartZeit='10:20'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC002';Benutzer='5678';StartZeit='11:20'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='11:25'}
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='12:30'}
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='14:25'}
New-Object -TypeName Software -Property @{Datei='Project1.exe';Verzeichnis="$($env:ProgramFiles)\Project1\";Computer='PC001';Benutzer='1234';StartZeit='18:30'}
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC002';Benutzer='5678';StartZeit='19:00'}
New-Object -TypeName Software -Property @{Datei='Project2.exe';Verzeichnis="$($env:ProgramFiles)\Project2\";Computer='PC001';Benutzer='1234';StartZeit='19:50'}
) | ForEach-Object {
$datei = $PSItem.Datei
$eintrag = $PSItem.Verzeichnis + ', ' + $PSItem.Benutzer
if ($ht.Contains($datei) ) {
$ht.$Datei = $ht.$Datei + '; ' + $eintrag
}
else {
$ht.add($datei, $eintrag)
}
}