Here is a rather complex script system I wrote. This is just for myself to remember and record my brilliant thoughts. I doubt if anyone else could use it. The goal is to get my users (including their login names and real names) from an external LDAP system and import them into my AD. (Windows based.) I'm doing the first step by using the ldapsearch from the opensource OpenLDAP package.
# STEP1: the raw list
C:\OpenLDAP\ClientTools\ldapsearch -D "cn=queryuser,dc=admin" -w "$$$$" -h 172.16.16.16 -b "dc=admin" -s sub "(&(objectclass=person)(|(gidnumber=100)(gidnumber=110)))" > C:\quser\ad-userimport-scripts\opslista.txt
# STEP2: an annoying thing here, because in the list we have both Base64 encoded and normal usernames we need to decode only the encoded ones.
$source = Get-Content "C:\quser\ad-userimport-scripts\opslista.txt" | Select-String "cn:", "displayName" #
$OutFile="c:\quser\ad-userimport-scripts\opslistanevekkel.txt"
if (Test-Path $OutFile) { Remove-Item $OutFile }
"uid,FirstName,LastName" > $OutFile
$Name_list = @()
$uid_list = @()
$source|ForEach-Object {
if ($_ -match "displayName:: ")
{
$tem = ($_ -replace "displayName:: ","")
$tam = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($tem))
# $Base64_list += ($_ -replace "displayName:: ","")
$Name_list += $tam
}
elseif ($_ -match "displayName: ")
{
$tum = ($_ -replace "displayName: ","")
$Name_list += $tum
}
}
$source|ForEach-Object {
if ($_ -match "cn: ")
{
($_ -replace "displayName: ","")
$uid_list += ($_ -replace "cn: ","")
}
}
for($i=0;$i-le $uid_list.length-1;$i++)
{
$Name_list[$i]=($Name_list[$i] -replace " ","")
$uid_list[$i]+","+$Name_list[$i] | Out-File -filepath $OutFile -Append
}
Nincsenek megjegyzések:
Megjegyzés küldése