Переместить пользователей по подразделениям исходя из их местонахождения в исходном домене
10 Март 2009
Спасибо товарищу Alexander Donin с форума Microsoft за помощь в написании данного скрипта на PowerShell для раскидывания пользователей по подразделениям исходя из их положения в исходном домене. Данный скрипт помогает раскидать пользователей в целевом доменене по подразделением при их переносе с помощью ADMT
#Заменить имя OU
$Ou="Migr_users"
#Заменить имя нового домена
$Domain1="DC=domain_new,DC=ru"
#Заменить имястарого домена
$Domain2="DC=domain_old,DC=ru"
#Ищем пользователей в OU
$Path1 = "LDAP://OU=" + $OU + "," + $domain1
$Path2 = "LDAP://" + $domain2
$Search = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path1)
$Search.filter = "(&(objectCategory=user)(cn=*))"
$Users = $Search.Findall()
# для каждого
foreach ($User_n in $Users ){
#находим соотв. в старом домене
$User = [ADSI]$User_n.Path
$USerName = [string]$User.Name
$Search2 = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path2)
$Search2.filter = "(&(objectCategory=user)(cn=$USerName))"
$User_old = $Search2.FindOne()
#меняем в пути имя домена
$User_old = [ADSI]$User_old.Path
$User_old_tmp = [string]$User_old.distinguishedName
$Path3 = [string]$user_old_tmp.Replace($domain2,$domain1)
#удаляем начало (СN=имя пользователя,)
$UserCN="CN=" + $user_old.CN + ","
$Path3 = "LDAP://" + [string]$Path3.Replace([string]$UserCN,"")
#собственно перемешение
$user.psbase.MoveTo([adsi]$Path3)
}
#Конец
$Ou="Migr_users"
#Заменить имя нового домена
$Domain1="DC=domain_new,DC=ru"
#Заменить имястарого домена
$Domain2="DC=domain_old,DC=ru"
#Ищем пользователей в OU
$Path1 = "LDAP://OU=" + $OU + "," + $domain1
$Path2 = "LDAP://" + $domain2
$Search = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path1)
$Search.filter = "(&(objectCategory=user)(cn=*))"
$Users = $Search.Findall()
# для каждого
foreach ($User_n in $Users ){
#находим соотв. в старом домене
$User = [ADSI]$User_n.Path
$USerName = [string]$User.Name
$Search2 = New-Object DirectoryServices.DirectorySearcher([ADSI]$Path2)
$Search2.filter = "(&(objectCategory=user)(cn=$USerName))"
$User_old = $Search2.FindOne()
#меняем в пути имя домена
$User_old = [ADSI]$User_old.Path
$User_old_tmp = [string]$User_old.distinguishedName
$Path3 = [string]$user_old_tmp.Replace($domain2,$domain1)
#удаляем начало (СN=имя пользователя,)
$UserCN="CN=" + $user_old.CN + ","
$Path3 = "LDAP://" + [string]$Path3.Replace([string]$UserCN,"")
#собственно перемешение
$user.psbase.MoveTo([adsi]$Path3)
}
#Конец

.gif)
