所以我有底部的脚本块:
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显示计算机名称标题,但没有实际的计算机和用户名标题就好了。我错过了什么,在哪里?
谢谢!
答案 0 :(得分:0)
select
(Select-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