Po przejrzeniu kilku rekordów userów okazało się, że niektórzy mają w Display Name poustawiane pomiędzy imieniem i nazwiskiem 2 spacje zamiast 1. Aby to skorygować, powstał ten skrypt:
$data=get-date -format g$comment="[changedDN "+$data+"by PeKi]"$logname = "changedDN";$logname += get-date -format "yyyyMMdd_hhmmss";$logname +=".log";$l=0$Root = New-Object DirectoryServices.DirectoryEntry $strROOTSearcher = New-Object DirectoryServices.DirectorySearcher$Searcher.SearchRoot = $root$searcher.Filter = "(&(objectClass=person)(objectcategory=person)(displayName=* *))";$users = $searcher.findAll(); $log=@();foreach ($user in $users){ $de = New-Object DirectoryServices.DirectoryEntry $user.Path; $log+=$de.SAMAccountName + " " + $de.displayName $de.displayName=([String]$de.displayName).Replace(" "," ") $l++}echo "Przetworzonych " $l | out-file $logname -Append$log| out-file $logname -Appendecho "Przetworzonych " $l$log
A ten skrypt poprawia błąd, w którym nazwisko jest powtórzone 2 razy:
$data=get-date -format g$comment="[changedDN "+$data+"by PeKi]"$logname = "changedDNGN";$logname += get-date -format "yyyyMMdd_hhmmss";$logname +=".log";$Root = New-Object DirectoryServices.DirectoryEntry $strROOTSearcher = New-Object DirectoryServices.DirectorySearcher$Searcher.SearchRoot = $root$searcher.Filter = "(&(objectClass=person)(objectcategory=person)(displayname=* * *)(givenName=* *)(sn=*))";$users = $searcher.findAll(); $log=@();$l=0foreach ($user in $users){ $de = New-Object DirectoryServices.DirectoryEntry $user.Path; $gns=([String]$de.givenName).Split(' ')[1].tolower() $sn=([String]$de.sn).tolower() if ($gns.CompareTo($sn) -eq 0) { $newGN=([String]$de.givenName).Split(' ')[0]; $newDN=$newGN+" "+([String]$de.sn) $log+=$de.SAMAccountName+ $de.givenName + $de.displayName + $newGN +$newDN write-host $l $de.givenName=$newGN $de.displayName=$newDN $l++ } }echo "Przetworzonych " $l | out-file $logname -Append$log| out-file $logname -Appendecho "Przetworzonych " $l$log
Remember Me