2017-07-27 20 views
1

我使用下面的命令來抓住從一個OU的用戶,並出口到CSV文件:獲取-ADUser便有並出口到多個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文件每個文件?

+1

可能重複的[如何在PowerShell中將一個大文本文件拆分爲多個文件](https://stackoverflow.com/questions/25396798/how-to-split-one-big-text-file-into -multiple-files-in-powershell) –

回答

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
$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開關(需要PSv3 +我相信)導出到CSV。
+1

哇,這太好了。這兩種解決方案都能起到一定的作非常感謝你。很高興看到獲得相同結果的替代方法。感謝解釋標記,非常有用。我將Ansgar的解決方案標記爲答案,因爲這只是第一個可行的解決方案。 – jshizzle