Basically, this will separate the global address lists (GALs) in exchange 2010 SP2 so you can host multiple organizations and they won’t pick up each other.
You must have Exchange 2010 SP2 or better, and it cannot be a domain controller (DC).
Each company will need all of these steps applied with different names for the custom attribute and various lists. Exchange cannot also be a domain controller or it will still load all users in address book.
Get-Mailbox -OrganizationalUnit "path to user folder" | Set-Mailbox -CustomAttribute15 "somename"
New-GlobalAddressList -name "company name" -RecipientFilter {(CustomAttribute15 -eq "somename")}
Get-Mailbox| where {$_.CustomAttribute15 -eq "somename"}| Set-Mailbox -AddressBookPolicy "Policy Name"