Gå til innhold

Active Directory: Eksport og Import


Anbefalte innlegg

Hei dere :)

 

Jeg jobber med et script som skal eksportere hele Active Directory slik at det kan importeres i en testlab.

 

Jeg er kommet et stykke på vei:

 

- Får eksportert og importert OU, Brukere, og grupper via LDifde

- Får eksportert og importert gruppemedlemskap via script.

- Får eksportert og importert GPO via GPMC.

 

Nå sliter jeg med rettigheter på objekter i AD.

 

Hvordan kan jeg få eksportert disse?

 

Mvh

LarsCB

 

Eksport av alle OU:

ldifde -f exportMe\AllOu.ldf -s addc1 -d "DC=XX,DC=XX" -p subtree -r "(objectClass=organizationalUnit)" -l "cn,objectclass,ou"

Eksport av alle brukere:

ldifde -f exportMe\AllUsers.ldf -s ADDC1 -d "DC=XX,DC=XX" -p subtree -l "cn,givenName,displayName,description,distinguishedName,userPrincipalName,objectclass,sAMAccountName"

 

Eksport av alle grupper:

ldifde -f exportMe\AllGroup.ldf -s ADdc1 -d "DC=XX,DC=XX" -r "(objectClass=Group)" -p subtree -l "dn,cn,description,groupType,objectClass,sAMAccountName"

 

 

Script for å generere DSMOD komandoer i en batfil. Lager gruppemedlemskap:

LogFile(now())

'Vi kobler oss til det gjeldende domenet
Set oRootDSE = GetObject("LDAP://RootDSE")
Set oDomain = GetObject("LDAP://" & oRootDSE.Get("DefaultNamingContext"))

'vi kaller på subrutinen for å kjøre den
Call EnumOUs(oDomain.ADsPath)

'sub rutine som pløyer gjennom AD og leter etter gruppemedlemer
Sub EnumOUs(sADsPath)

'vi lager en samling av alle OU i domenet 
Set oContainer = GetObject(sADsPath)
oContainer.Filter = Array("OrganizationalUnit")

'For hvert OU i samlingen:
For Each oOU in oContainer
 
 '- Lager vi en variabel for banen til OUet. 
 domOUPath = oOU.ADsPath
 	
 	'- Lager vi en samling Gruppeobjektene i det respektive OUet.
 	Set objGruppe = GetObject(domOUPath)
 	objGruppe.Filter = Array("Group")

 	'For hver Gruppe samlingen:
 	For each oUser in objGruppe

   ' - setter vi variabelen for banen til gruppen. Exempel ldap:\\CN=XX,OU=XX,DC=XX,DC=XX
   strOU = oUser.ADsPath
   
   '- Setter vi banen til Gruppen vi skal hente medlemmene fra.
   Set objGruppeMedlem = GetObject(strOU)
   
   'får vi feil, fortsetter vi bare 
   on error resume next
   
   'For hvert medlemskap i gruppen:
   For Each strRight in objGruppeMedlem.Member
   
   	'- setter vi variabel med banen til gruppen, og trimmer bort LDAP:\\ fra den
   	strOULength = len(strOU) - 7
   	
   	'Hvis det eksisterer medlemmer i gruppen:
   	if strRight <> "" then
   	
     'Lager vi oppføring i loggfil for import av medlemmene i annet domene. 
     LogFile("dsmod.exe group " & Chr(34)  & right(strOU,strOULength) & Chr(34) &" -addmbr " & Chr(34) & strRight & Chr(34) &" -s TP-DC1" & vbcr )
   	
   	'Hvis det ikke eksisterer medlemmer i gruppen:
   	else 'if strRight <> "" then

     'Lager vi oppføring i loggfil for grupper uten medlemskap. 
     LogFile2(strOU)

   	end if 'if strRight <> "" then

   Next 'For Each strRight in objGruppeMedlem.Member
 

 	Next 'For each oUser in objGruppe

 EnumOUs(oOU.ADsPath)
Next 'For Each oOU in oContainer

End Sub

'-----------------------------------------------------------------------------

'Erstatter DC=XX med DC=YY i filen dsMod.txt
Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\util\ADExportToTP\exportMe\dsMod.txt", ForReading)

strText = objFile.ReadAll
objFile.Close
strNewText = Replace(strText, "DC=XX,", "DC=YY,")

Set objFile = objFSO.OpenTextFile("C:\util\ADExportToTP\exportMe\dsMod.txt", ForWriting)
objFile.WriteLine strNewText
objFile.Close

LogFile(now())
'-----------------------------------------------------------------------------


Private Sub LogFile(feilmeld)

Dim objFileSystem, objOutFile, WshShell
Dim strLoggfile
Dim WSHNet, fso, Myfile

Const ForAppending=8

Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.OpenTextFile("C:\util\ADExportToTP\exportMe\dsMod.txt", ForAppending, True)
MyFile.WriteLine(feilmeld)
MyFile.Close
 	
End sub


'-----------------------------------------------------------------------------


Private Sub LogFile2(feilmeld)

Dim objFileSystem, objOutFile, WshShell
Dim strLoggfile
Dim WSHNet, fso, Myfile

Const ForAppending=8

Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.OpenTextFile("C:\util\ADExportToTP\exportMe\dsModNoMember.txt", ForAppending, True)
MyFile.WriteLine(feilmeld)
MyFile.Close
 	
End sub

Endret av LarsCB
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...