Get-ADuser并导出到多个CSV文件

时间:2017-07-27 10:21:47

标签: powershell active-directory

我正在使用以下命令从OU获取用户并导出到csv文件:

Get-ADUser -Filter * -SearchBase 'OU=Contoso Users,OU=Contoso,DC=domain,DC=local' -Properties * | Select UserPrincipalName, EmailAddress | Sort UserPrincipalName | Export-CSV $UsersToMigrate -NoTypeInformation -Force

无论如何要导出到每个文件10个用户的多个csv文件吗?

2 个答案:

答案 0 :(得分:1)

在循环中追加到相应的输出文件,并使用计数器和整数除法来确定实际的文件名。

$i = 0
... | Sort UserPrincipalName | ForEach-Object {
    $csv = "C:\path\to\output_$([Math]::Floor([int]$i/[int]10)).csv"
    $_ | Export-Csv $csv -NoType -Append
    $i++
}

答案 1 :(得分:1)

$Users = Get-ADUser -Filter * -SearchBase 'OU=Contoso Users,OU=Contoso,DC=domain,DC=local' -Properties * | Select UserPrincipalName, EmailAddress | Sort UserPrincipalName
$Users | ForEach-Object -Begin {$i = 1} {
     $_ | Export-CSV "$UsersToMigrate-$([Math]::Ceiling($i++ / 10)).csv" -NoTypeInformation -Append
}

<强>解释

  • 使用ForEach-Object对用户集合进行迭代,首先在$i块中将计数器变量Begin初始化为1。
  • 将计数器除以10并向上舍入为最接近的整数。使用此作为CSV名称的一部分,并使用-Append开关导出到CSV(需要PSv3 +我相信)。