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
Mögliches Duplikat von [PowerShell Export-CSV-Probleme] (https://stackoverflow.com/questions/42233416/powershell-export-csv-issues) –