Powershell PSObject Liste erstellen und Ausgeben
Ich will eine Liste erstellen mit Dateiname, Dateiversion und Produktversion
Es werden einige Rechner abgefragt, falls möglich sollte es so ungefähr aussehen(hab mal produktversion ausgelassen):
Es werden einige Rechner abgefragt, falls möglich sollte es so ungefähr aussehen(hab mal produktversion ausgelassen):
Dateiname Sollversion Computer1 Computer2 Computer3
Baum 1.0 0.9 1.2 1.0
Ente 1.5 1.1 1.5 1.3
$Liste= New-Object PSObject
$Pfade=@{
"baum"="C:\Baum.dll"
"Ente"="C:\Ente.dll"
}
$Pfade.GetEnumerator() |Foreach{
$Datei= $_.key
$Pfad=$_.value
$ZielInhalt=gci $Pfad |select -ExpandProperty versioninfo
$ZielProduktversion=$ZielInhalt.ProductVersion
$ZielFileversion=$ZielInhalt.FileVersion
Add-Member -InputObject $Liste -MemberType NoteProperty -Name Dateiname -Value $Datei
Add-Member -InputObject $Liste -MemberType NoteProperty -Name ZielProduktversion -Value $ZielProduktversion
Add-Member -InputObject $Liste -MemberType NoteProperty -Name ZielFileversion -Value $ZielFileversion
}
$liste
Add-Member : Es kann kein Element mit dem Namen "ZielProduktversion" hinzugefügt werden, da bereits ein Element mit diesem Namen vorhanden
ist. Wenn Sie das Element trotzdem überschreiben möchten, verwenden Sie dafür den Force-Parameter.
In C:\Version.ps1:262 Zeichen:1
+ Add-Member -InputObject $Liste -MemberType NoteProperty -Name ZielProduktversion ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (@{Dateiname=Too...ion=3.0.0.0 }:PSObject) [Add-Member], InvalidOperationException
+ FullyQualifiedErrorId : MemberAlreadyExists,Microsoft.PowerShell.Commands.AddMemberCommand
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 278498
Url: https://administrator.de/forum/powershell-psobject-liste-erstellen-und-ausgeben-278498.html
Ausgedruckt am: 03.04.2025 um 05:04 Uhr
1 Kommentar

Moin Marabunta,
du kannst bei einem Custom Object eine Spalte(Eigenschaft) nur einmal hinzufügen, d.h. das du dein Objekt außerhalb der Schleife erstellen solltest wenn du Add-Member benutzt. Deswegen auch die Fehlermeldung die das ja auch schon sagt
z.B. so
Gruß jodel32
du kannst bei einem Custom Object eine Spalte(Eigenschaft) nur einmal hinzufügen, d.h. das du dein Objekt außerhalb der Schleife erstellen solltest wenn du Add-Member benutzt. Deswegen auch die Fehlermeldung die das ja auch schon sagt
z.B. so
$Liste = @()
$computer = @('Computer1','Computer2','Computer2')
$pfade=@{
"Baum"="\c$\Baum.dll"
"Ente"="\c$\Ente.dll"
}
$pfade.GetEnumerator() | %{
$Datei = $_.Key
$pfad = $_.Value
$obj = New-Object PSObject -Property @{"Dateiname"=$Datei}
$computer | %{
gci "\\$computer$pfad" | %{
$obj | Add-Member -MemberType NoteProperty -Name $_ -Value $_.VersionInfo.FileVersion
}
}
$liste += $obj
}
$liste