2

从 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",
4

1 回答 1

0

如果使用Export-CSV内部foreach循环,则必须记住-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 用户,请检查文件是否包含正确的身份和/或服务器。可接受的身份和/服务器名称格式可以在Get-AdUserdocs中找到。


根据您提供的文件:

输出文件:

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

我可以看到两件事:

  • 你可以-NoTypeInformation用来摆脱第一行
  • 如您所见,只有最后一行表示从 AD 获取数据已成功,您只需要-AppendExport-CSV.
于 2018-08-10T10:38:22.580 回答