schrubba

Powershell Objektunterschiede

Hallo,

ich bin noch relativ neu in der Powershell und habe da jetzt mal ein kleines Problem.
Ich vermute, dass mir da noch einiges an Wissen fehlt was die Objekte in Powershell angeht und hoffe, dass mir da jemand ein wenig helfen kann.

Folgender Testcode funktioniert soweit Super, aber wenn ich Block 1 deaktiviere und direkt das vom Import-CSV erzeugte Object verwenden möchte, funktioniert nur der erste Eintrag bzw der 2. Eintrag schlägt immer fehl. Sind mindestens 2 Einträge in der CSV vorhanden, funktioniert es auch ohne Probleme.

$script:scriptpath = Split-Path $script:MyInvocation.MyCommand.Path

# ----- Block 1 -----
$script:test = @()
$testimport = Import-Csv $script:scriptpath\test.csv -Delimiter ";"  
foreach($tmp_import in $testimport){
    $script:test += [PSCustomObject] @{testID = $tmp_import.testID; testname = $tmp_import.testname; default = $tmp_import.default}
}
# ----- Block 1 -----

#$script:test = Import-Csv $script:scriptpath\test.csv -Delimiter ";" 

$script:test += [PSCustomObject] @{testID = 33; testname = "one"; default = 0}  
$script:test += [PSCustomObject] @{testID = 34; testname = "two"; default = 1}  
$script:test += [PSCustomObject] @{testID = 35; testname = "three"; default = 1}  
$script:test += [PSCustomObject] @{testID = 36; testname = "four"; default = 0}  

$script:test

Ich habe schon versucht Unterschiede zwischen den beiden Objekten zu ermitteln, aber ich kann einfach nichts finden... :/


Gruß
schrubba
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 302169

Url: https://administrator.de/forum/powershell-objektunterschiede-302169.html

Ausgedruckt am: 26.06.2025 um 11:06 Uhr

114757
Lösung 114757 18.04.2016 aktualisiert um 10:48:09 Uhr
Goto Top
Moin,
der Grund ist ganz einfach: Wenn sich in der CSV nur ein Eintrag befindet ist das Ergebnis nur ein einfaches Objekt und kein Array aus Objekten mehr. Also erstellst du entweder erst das Array und fügst dann die durch Inport-CSV importierten Objekte dem Array hinzu oder klammerst den Import-CSV mit einem Array-Ausdruck
$script:test = @()
$script:test += Import-Csv $script:scriptpath\test.csv -Delimiter ";"  
oder
$script:test = @(Import-Csv $script:scriptpath\test.csv -Delimiter ";")  
Nur einem Array kannst du hier weitere Objekte hinzufügen, keinem einzelnen Objekt selber.

Gruß jodel32
schrubba
schrubba 18.04.2016 um 10:59:23 Uhr
Goto Top
Oh Mann, ich mach es noch selber im Block 1 und kam da einfach nicht drauf..

Vielen Dank! :D