将值分配给 Powershell 中的特定 csv 列

Allocating values to specific csv columns in Powershell

我想问一下是否有人可以建议一种方法如何将变量中的值分配给 csv 中的列。

例如:

TriggeredBy | TriggeredTime | Firstname | Lastname | Username | ....

在我的整个脚本中,我都在修改输入数据,并且我希望它能在行中将行填充到相关列中。 然后来自不同服务器的另一个脚本必须接管,读取计算值并将其计算结果添加到其专用列中。 输出将是一行,我可以在其中看到所有结果。

最终它应该作为一种数据库。

此处的脚本示例为:

$aduser = Get-ADUser -Filter {sAMAccountName -like $username} -Properties *
$Firstname = $aduser.GivenName 
$Firstname | Export-CSV -Path $filepath | Select-Object "First Name" 

$Lastname = $aduser.Surname 
$Lastname | Export-CSV -Path $filepath | Select-Object "Last Name" 

$TriggeredBy = $env:UserName 
$TriggeredBy | Export-CSV - Path $filepath | Select-Object "TriggeredBy" 

...

整个过程都保存在一个相关行中。下一个过程对下一行等执行相同的操作...

"Export-CSV ...." 部分显然是错误的,我需要一些替代方法

非常感谢!

使用Select-Object with :

Get-ADUser -Properties * -Filter "sAMAccountName -eq `"$username`"" |                            #`
  Select-Object @{ n='FirstName'; e='GivenName' },
                @{ n='Last Name'; e='Surname' },
                @{ n='TriggeredBy'; e={ $env:UserName } } |
    Export-Csv -NoTypeInformation -Literalpath $filePath

请注意,我使用了 string 作为 -Filter 参数,因为无论如何它最终都会变成这样。使用脚本块文字语法 { ... } 很诱人,但最终导致的问题多于它解决的问题 - 请参阅 this answer.

请注意,在 Windows PowerShell Export-Csv 中默认创建 ASCII(!) 编码文件,这可能会导致信息丢失;使用 -Encoding 参数更改它。

PowerShell [Core] v6+,相比之下,值得称赞的是默认为(无 BOM)UTF-8;还有,
-NoTypeInformation 那里不再需要开关。

如果您想追加到现有的 CSV 文件(需要具有相同的列结构),请使用 -Append 开关。