Export-CSV - (Powershell)

时间:2016-06-21 17:39:00

标签: windows csv powershell automation

所以我有底部的脚本块:

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

导出的csv显示计算机名称标题,但没有实际的计算机和用户名标题就好了。我错过了什么,在哪里?

谢谢!

1 个答案:

答案 0 :(得分:0)

selectSelect-Object的别名)返回一个对象,其中您指定的属性。所以当你第一次select username时,你得到的对象只有用户名;所有其他属性都被丢弃,因此当第二个Select-Object调用运行时,它不会返回computername

第一个select似乎完全没必要;把它拿出来,我认为一切都会按预期工作。

编辑:我现在看到computername不是返回的WMI对象的属性;它来自CSV。您的ForEach-Object仅返回WMI对象,因此CSV行对象将被丢弃。

您需要做的是将CSV中的computername添加到WMI对象,您可以使用Select-Object(带有计算列)或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

或者:

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