LarsCB Skrevet 23. januar 2007 Del Skrevet 23. januar 2007 (endret) 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 23. januar 2007 av LarsCB Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå