获取ADuser并导出到多个CSV文件



我正在使用以下命令从 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文件?

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

$i = 0
... | Sort UserPrincipalName | ForEach-Object {
$csv = "C:pathtooutput_$([Math]::Floor([int]$i/[int]10)).csv"
$_ | Export-Csv $csv -NoType -Append
$i++
}
$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遍历用户集合,首先在Begin块中将计数器变量$i初始化为 1。
  • 将计数器除以 10 并向上舍入到最接近的整数。将其用作 CSV 名称的一部分,并使用-Append开关导出到 CSV(我相信需要 PSv3+(。

最新更新