2016-06-21 14 views
1

So habe ich den Boden Skript:Export-CSV - (Powershell)

Import-csv C:\file_location.csv | foreach-object { 
Get-WmiObject -computername $_.computername -class Win32_ComputerSystem | select username} | ` 
Select-Object computername, username | Export-CSV C:\file_location.csv -notypeinformation 

der exportierte CSV zeigt den Computernamen Header, aber keine tatsächlichen Computer und der Benutzername Header ist gut so. Was und wo vermisse ich etwas?

Vielen Dank!

+0

Mögliches Duplikat von [PowerShell Export-CSV-Probleme] (https://stackoverflow.com/questions/42233416/powershell-export-csv-issues) –

Antwort

0

select (welches ein Alias ​​für Select-Object ist) gibt ein Objekt mit nur die Eigenschaften, die Sie angeben. Also, wenn Sie Ihre erste select username gemacht haben, haben Sie ein Objekt mit nur dem Benutzernamen; Alle anderen Eigenschaften wurden verworfen. Wenn also der zweite Select-Object-Aufruf ausgeführt wird, gibt es keine computername für die Rückgabe.

Die erste select scheint dort völlig unnötig; Nimm es einfach raus und ich denke, alles wird wie erwartet funktionieren.

EDIT: Ich sehe jetzt, dass computername ist keine Eigenschaft des zurückgegebenen WMI-Objekts; es kam von der CSV. Ihr ForEach-Object gibt nur das WMI-Objekt zurück, so dass das CSV-Zeilenobjekt verworfen wird.

Was Sie tun müssen, ist die computername aus der CSV zu dem Objekt WMI hinzufügen, die Sie mit Select-Object tun können (mit einer berechneten Spalte) oder Add-Member:

Import-csv C:\file_location.csv | 
    ForEach-Object { 
     Get-WmiObject -computername $_.computername -class Win32_ComputerSystem | 
     Select-Object @{Name='ComputerName';Expression={$_.computername}},username 
    } | 
    Export-CSV C:\file_location.csv -notypeinformation 

Oder:

Import-csv C:\file_location.csv | 
    ForEach-Object { 
     Get-WmiObject -computername $_.computername -class Win32_ComputerSystem | 
     Add-Member -NotePropertyName computername -NotePropertyValue $_.computername -Force -PassThru 
    } | 
    Select-Object computername, username 
    Export-CSV C:\file_location.csv -notypeinformation 
+0

Vielen Dank für die Antwort! Ich habe beide Methoden ausprobiert und bin trotzdem gleich geblieben. Die select-Objektmethode liefert die gleichen Ergebnisse, ComputerName-Header ohne Daten in der Spalte. Der Add-Member exportiert eine leere CSV. –

+0

Scratch dass !! Ich habe meinen Fehler gefunden. Das Add-Member hat perfekt funktioniert. Danke @briantist !! –