首页 > 解决方案 > Powershell CSV有序导出特定列

问题描述

我有以下问题:

我有一个 Get-ADUser 查询,并且有特定的字段可以获取(仅测试查询)

$AllADUsers = get-aduser -Identity m.mustermann -Properties * | select mail, title, l, GivenName, Surname, company, department, mobile

此外,我必须添加一些静态字段如何将语言或注释添加到 CSV,为此我采用了一些变量:

$Language = "german"
$Comment = ""
$Link = ""
$gender = ""
$exportto = "C:\Temp\Export01.csv"

比我想导出带有分隔符“:”的有序 UTF8 CSV 中的所有条目。我做了一个 foreach 但我总是出错或不完整的列表 - 我向你展示我的代码(但我有错误)

Foreach ($ADUser in $AllADUsers) {

  $MailAddress = $ADUser.mail
  $FullName = "$ADUser.GivenName" + "$ADUser.Surname"
  $Title = $AdUser.Title
  $Location = $ADUser.l
  $Comment = $Comment
  $Link = $Link
  $MobilePhone = $ADUser.mobile
  $Language = $Language
  $Divison = $ADUser.Department
  $GivenName = $ADUser.GivenName
  $Surname = $ADUser.Surname 


}

$ADUser | Export-CSV -Path $exportto -NoTypeInformation -Delimiter ":" -Encoding UTF8

你能帮助我吗?

导出必须带有有序列表,并且没有“”,并且仅按此顺序。

谢谢你。最大限度

标签: powershellcsv

解决方案


您的代码中存在一些高级问题。

不正确的分配

在您的代码中,您应该将值分配给$AdUser. 就像是:

foreach ($ADUser in $AllADUsers) {
  $ADUser.FullName = "$($ADUser.GivenName) $($ADUser.Surname)"
  $ADUser.Comment = $Comment
  $ADUser.Link = $Link
}

没有出口

目前您只导出最后一个条目,您应该通过管道$AllADUsers传输到Export-Csv

$AllADUsers| Export-CSV -Path $exportto -NoTypeInformation -Delimiter ":" -Encoding UTF8

不使用 Select-Object 计算属性

通常,您可以将代码缩短为单行代码,例如:

$AllADUsers | Select-Object @{n="Comment";{$Comment}},@{n="FullName";e={"$($ADUser.GivenName) $($ADUser.Surname)"}} ... | Export-CSV ...

在此处阅读有关计算属性的更多信息


推荐阅读