Csv 为空以从广告用户导出自定义属性

Csv empty to export custom attribute from ad users

从 csv 文件中,在 powershell 控制台中查看属性值没问题,但是当我想导出到 csv 文件中时,文件是空的,也许有人可以帮我吗?

$adusers = Import-Csv "c:\temp\adusers.csv" -Delimiter ";"

foreach ($item in $adusers) {
# Map variables from CSV
$adusers = $item.'ADUsers'
$Servers = $item.'Domain'


Get-ADUser -identity $adusers -Properties flags -Server $Servers | Select- 
Object -Property samaccountname, userprincipalname, flags | export-csv 
c:\temp\fdfdrff.csv -Encoding Unicode

}

文件adusers.csv:

ADUsers;Domain
account1;Domain1
account2;Domain2
account3;Domain3
account4;Domain4
account5;Domain5
account6;Domain6
account7;Domain7
account8;Domain8
account9;Domain9

输出文件:

"#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser"
"samaccountname","userprincipalname","flags"
"account9","account9@Domain9.local",

如果在 foreach 循环中使用 Export-CSV,则必须记住 -Append 参数。否则,每次文件都会被替换,这在您的示例中发生。

此外,您可以删除分配变量并直接使用 $item 属性:

Get-ADUser -identity $item.ADUsers -Properties flags -Server $item.Domain

更详细的故障排除:

$adusers = Import-Csv "c:\temp\adusers.csv" -Delimiter ";"
$adusers

如果$adusers没有正确显示对象,请检查文件格式。

内部 foreach 运行 仅

Get-ADUser -identity $item.ADUsers -Properties flags -Server $item.Domain

如果 AD 用户未正确列出,请检查文件是否包含正确的身份 and/or 服务器。可以在 Get-AdUser docs.

中找到接受的身份 and/server 名称格式

根据您提供的文件:

The output file :

"#TYPE Selected.Microsoft.ActiveDirectory.Management.ADUser"
"samaccountname","userprincipalname","flags"
"account9","account9@Domain9.local",

我可以看到两件事:

  • 您可以使用 -NoTypeInformation 删除第一行
  • 如您所见,只有最后一行表示从 AD 获取数据成功,您只需要 -Append 在您的 Export-CSV.