# balance users per db's

**URL:** <https://forums.powershell.org/t/balance-users-per-dbs/8117>\
**Category:** PowerShell Help\
**Created:** [February 22, 2017, 7:48pm UTC](https://forums.powershell.org/t/balance-users-per-dbs/8117 "2017-02-22T19:48:22Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![turbo-mcp](https://avatars.discourse-cdn.com/v4/letter/t/58f4c7/32.png) [@turbo-mcp](https://forums.powershell.org/u/turbo-mcp)\
**Post date:** [February 22, 2017, 7:48pm UTC](https://forums.powershell.org/t/balance-users-per-dbs/8117/1 "2017-02-22T19:48:22Z")

</div>

Hi  
I got interesting question  
lets say I have 700 test users/mailboxes  
that I want to load balance across 175 databases  
how would I got about doing that?  
for example I have this part nailed down:  
Import-Csv c:\temp\out.csv | ForEach-Object { New-ADuser -path ‘OU=OU1,DC=test,DC=corp’ -Name $_.samAccountName -samAccountName $_.samAccountName –userPrincipalName $_.userPrincipalName -GivenName $_.cn -Surname $_.sn -displayName $_.displayName -accountpassword (ConvertTo-SecureString $_.Password -AsPlainText -Force) -Enabled $true}  
[array]$databases=1..175 | % { “DB{0:000}” -f $_ }

this part is where I’m stuck:

# Enable mailboxes

Get-User -OrganizationalUnit ‘OU=OU1,DC=test,DC=corp’ -Filter ‘RecipientType -eq “user”’ | ForEach-Object { $email = $_.FirstName +“.”+ $_.LastName +“@evo960.info”; Enable-Mailbox -Identity $_.SamAccountName -DisplayName $_.DisplayName -Alias $\_.SamAccountName -PrimarySmtpAddress $email -Database ???}

basically need to loop through $databases more then once(cause I got 175 and 700 users)  
Thanks

---

<div class="post-metadata">

**Author:** ![curtis-smith](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.powershell.org/curtis-smith/32/121_2.png) [@curtis-smith](https://forums.powershell.org/u/curtis-smith)\
**Post date:** [February 23, 2017, 12:44am UTC](https://forums.powershell.org/t/balance-users-per-dbs/8117/2 "2017-02-23T00:44:15Z")

</div>

There are several ways to accomplish this, but based on what you already have, you could do something like this.

```
Get-User -OrganizationalUnit 'OU=OU1,DC=test,DC=corp' -Filter 'RecipientType -eq "user"' | 
ForEach-Object {
    $dbID++
    $dbName = "DB{0:000}" -f $dbID
    $email = $_.FirstName +"."+ $_.LastName +"@evo960.info"
    Enable-Mailbox -Identity $_.SamAccountName -DisplayName $_.DisplayName -Alias $_.SamAccountName -PrimarySmtpAddress $email -Database $dbName
    if ($dbID -eq 175) {$dbID = 0}
}
```

---

<div class="post-metadata">

**Author:** ![turbo-mcp](https://avatars.discourse-cdn.com/v4/letter/t/58f4c7/32.png) [@turbo-mcp](https://forums.powershell.org/u/turbo-mcp)\
**Post date:** [February 23, 2017, 9:42am UTC](https://forums.powershell.org/t/balance-users-per-dbs/8117/3 "2017-02-23T09:42:36Z")

</div>

Thanks  
very helpful

---

<div class="post-metadata">

**Author:** ![dotnVo](https://avatars.discourse-cdn.com/v4/letter/d/4af34b/32.png) [@dotnVo](https://forums.powershell.org/u/dotnVo)\
**Post date:** [May 16, 2024, 8:39pm UTC](https://forums.powershell.org/t/balance-users-per-dbs/8117/4 "2024-05-16T20:39:14Z")

</div>


