Mieliśmy ostatnio problem z polskimi znakami w displayname - dostaliśmy listę kont do załozenia która była w innym kodowaniu niz zazwyczaj, i automat załozył konta z polskimi znakami w displayName. Niestety Linuxy przy zakladaniu aliasów pocztowych nie poradziły sobie z polskimi znakami, więc mieliśmy ok 100 kont do dodania.
Kfaz po długiej i cięzkiej nauce powershella napisał taki skrypt:
$Root = New-Object DirectoryServices.DirectoryEntry $strROOT$logname = "Nazwiska";$logname += get-date -format "yyyyMMdd_hhmmss";$logname +=".log";$Searcher = New-Object DirectoryServices.DirectorySearcher$Searcher.SearchRoot = $root$searcher.Filter = "(&(objectClass=User)(!(objectClass=Computer)))";$users = $searcher.findAll(); $l=0;$log=@();$polish = "ą","ć","ę","ł","ń","ó","ś","ź","ż","Ą","Ć","Ę","Ł","Ń","Ó","Ś","Ź","Ż";$latin = "a","c","e","l","n","o","s","z","z","A","C","E","L","N","O","S","Z","Z"foreach ($user in $users){ write-host "." -NoNewLine; if (([string] $user.properties.displayname) -match "[ąćęłńóśźżĄĆĘŁŃÓŚŹŻ]") { $de = New-Object DirectoryServices.DirectoryEntry $user.Path; $temp = $de.displayName; for ($i = 0; $i –lt $polish.count; $i++) { $temp = ([String]$temp).Replace($polish[$i], $latin[$i]); } $log+=$de.SAMAccountName +" "+$de.displayName+" "+$temp; $de.SAMAccountName; $de.displayName; $temp; echo "-------------------------------------"; $de.displayName = $temp; $de.CommitChanges(); $l++; }}echo "Przetworzonych " $l | out-file $logname -Append$log | out-file $logname -Appendecho "Przetworzonych " $l
Remember Me