Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Active Directory in SQL-DB importieren

Frage Entwicklung Datenbanken

Mitglied: Cyberops

Cyberops (Level 1) - Jetzt verbinden

26.08.2008, aktualisiert 11.09.2008, 6916 Aufrufe, 4 Kommentare

Automatischer Import der Active Directory in eine SQL-DB

Hallo zusammen,

ich suche verzweifelt nach Möglichkeit alle Information sämtlicher AD-User und AD-Kontakte
in eine SQL-DB zu importieren.

Ich habe es bereits mit diversen VB-Scripts und DOS- Befehlen probiert.
Aber das Ergebnis war bis jetzt nie wirklich befriedigend.

Gibt es nicht eine Möglichkeit direkt via DTS alle Informationen aus der Active Directory
in eine SQL- Tabelle zu importieren.


Merci schonmals für eure Hilfe.


Gruss,

Michael
Mitglied: godlie
26.08.2008 um 12:43 Uhr
Hm ich weis nicht aber eigentlich ist das mit ein wenig googlen sehr schnell zusammengesucht und dann noch ca 3h scripten dann ist sowas auch schon fertig.

Einfacher gehts auch mit dem ADSI.

hier ein Link:
http://www.faq-o-matic.net/2003/04/17/auslesen-der-domaenen-daten-ueber ...
Bitte warten ..
Mitglied: Cyberops
11.09.2008 um 11:08 Uhr
Sorry das ich erst so spät antworte,


aber ich habe mir diesen Lösungsweg einmal angeschaut.
Habe es aber nicht wirklich hinbekommen.
Ich konnte zwar den Linked Server integrieren, aber der Rest hat nicht wirklich funtkioniert.


Ich habe dann einfach ein Script geschrieben, was mir die ActiveDirectory ausliest und alle Daten in ein
CSV- File schreibt. Anschliessend wird dann via DTS, das CSV- File in die Datenbank eingelesen.

Aber trotzdam nochmals Danke für deine Hilfe.

Gruss,

Michael
Bitte warten ..
Mitglied: davidv
05.04.2009 um 18:27 Uhr
hallo,

kannst du hier das script und das dts mal posten das wäre toll.

vielen dank im voraus

david
Bitte warten ..
Mitglied: Cyberops
06.04.2009 um 13:49 Uhr
Klar kein Problem,

Was ich aber noch anmerken muss:

- Es werden nicht alle AD-Daten ausgelesen
- Es ist vom Code her nicht gerade das Optimum, aber es funktioniert.
- Es braucht je nach Grösse der AD einige Minuten (in unserem Umfeld sind es für ca. 5500 User und Kontakte ca 20-25Minuten)
- Es wurde noch nicht mit einer Windows Server 2008- Umgebung getestet.

AD-Scipt
01.
  
02.
On Error Resume Next 
03.
 
04.
'Variablen und Konstanten deklarieren und initiieren 
05.
Const ADS_SCOPE_SUBTREE = 2 
06.
intID = 1 
07.
 
08.
'TXT- File erstellen 
09.
Set objFS = CreateObject("Scripting.FileSystemObject") 
10.
Set TXTFile = objFS.CreateTextFile("\\SERVERNAME\ORDNERNAME\DATEINAME.txt", True) 
11.
 
12.
'Kopfzeile mit den Spaltenüberschriften in der TXT- Datei hinterlegen 
13.
TXTFile.WriteLine ("ID" & "; " & "EmployeeID" & "; " & "Class" & "; " & "SN" & "; "& "GivenName" & "; "& "DisplayName" _ 
14.
	 & "; "& "CN" & "; "& "Name" & "; "& "Initials" & "; "& "Description" & "; "& "PhysicalDeliveryOfficeName" & "; "& "TelephoneNumber" _ 
15.
	 & "; "& "OtherTelephone" & "; "& "Mail" & "; "& "WWWHomepage" & "; "& "StreetAddress" & "; "& "PostOfficeBox" & "; "& "City" _ 
16.
	 & "; "& "Kanton" & "; "& "PLZ" & "; "& "Country" & "; "& "Country_Short" & "; "& "Country_Code" & "; "& "UserPrincipalName" _ 
17.
	 & "; "& "SamAccountName" & "; "& "UserWorkstations" & "; "& "BadPwdCount" & "; "& "UserAccountControl" & "; "& "AccountExpirationDate" _ 
18.
	 & "; "& "ProfilePath" & "; "& "ScriptPath" & "; "& "HomeDirectory" & "; "& "HomeDrive" & "; "& "HomePhone" & "; "& "OtherHomePhone" _ 
19.
	 & "; "& "Pager" & "; "& "OtherPager" & "; "& "Mobile" & "; "& "OtherMobile" & "; "& "FAX" & "; "& "OtherFAX" & "; "& "IPPhone" _ 
20.
	 & "; "& "OtherIPPhone" & "; "& "Info" & "; "& "Title" & "; "& "Department" & "; "& "Company" & "; "& "Manager" _ 
21.
	 & "; "& "TerminalServicesProfilePath" & "; "& "TerminalServicesHomeDirectory" & "; "& "TerminalServicesHomeDrive" & "; "& "AllowLogon" _ 
22.
	 & "; "& "WhenCreated" & "; "& "WhenChanged" & "; "& "HomeMDB" & "; "& "MailNickname" & "; "& "MsExchHomeServerName" & "; "& "HomeMTA" _ 
23.
	 & "; "& "LegacyExchangeDN" & "; "& "DisplayNamePrintable" & "; "& "MsExchHideFromAddressLists" & "; "& "DistinguishedName" _ 
24.
	 & "; "& "ADS-Server1" & "; "& "ADS-Server2" & "; "& "ADS-Server3") 
25.
	  
26.
'Active- Directory- Verbindung herstellen  
27.
Set objConnection = CreateObject("ADODB.Connection") 
28.
Set objCommand =   CreateObject("ADODB.Command") 
29.
objConnection.Provider = "ADsDSOObject" 
30.
objConnection.Open "Active Directory Provider" 
31.
Set objCommand.ActiveConnection = objConnection 
32.
 
33.
objCommand.Properties("Page Size") = 1000 
34.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
35.
 
36.
'AD- Kommando erstellen -> Alle Kontakte und User auflisten 
37.
objCommand.CommandText = "SELECT distinguishedName FROM 'LDAP://dc=DOMAIN,dc=TOPLEVELDOMAIN' WHERE objectCategory='user'"   
38.
Set objRecordSet = objCommand.Execute 
39.
 
40.
objRecordSet.MoveFirst 
41.
Do Until objRecordSet.EOF 
42.
	'Für jeden ausgelesenen Wert, Kontakt- und User- Informationen auswerten 
43.
	strLDAP = "LDAP://" & objRecordset.Fields("distinguishedName").Value 
44.
    Set objUser = GetObject(strLDAP) 
45.
     
46.
    'AD- Daten an Variablen übergeben 
47.
    	'Generelle Personendaten 
48.
		If objUser.EmployeeID = " " Then 
49.
			strEmployeeID = "" 
50.
		Else 
51.
			strEmployeeID = objUser.EmployeeID 
52.
		End If 
53.
		strClass = objUser.Class 
54.
		strSN = objUser.sn 
55.
		strGivenName = objUser.givenName 
56.
		strDisplayName = objUser.displayName 
57.
		strCN = objUser.cn 
58.
		strName = objUser.name 
59.
		strInitials = objUser.initials 
60.
		strDescription = objUser.Description 
61.
		strOffice = objUser.physicalDeliveryOfficeName 
62.
		If objUser.telephoneNumber = "-" Then 
63.
			strPhone = "" 
64.
		Else 
65.
			strPhone = objUser.telephoneNumber 
66.
		End If 
67.
		If objUser.otherTelephone = "-" Then 
68.
			strOtherPhone = "" 
69.
		Else 
70.
			strOtherPhone = objUser.otherTelephone 
71.
		End If 
72.
		If objUser.mail = "NoEmailAdress@bell.ch" Then 
73.
			strMail = "" 
74.
		Else 
75.
			strMail = objUser.mail 
76.
		End If 
77.
		strHomepage = objUser.wwwHomepage 
78.
     
79.
		'Adressdaten 
80.
		strStreetAddress = objUser.streetAddress 
81.
		strPostOfficeBox = objUser.postOfficeBox 
82.
		strCity = objUser.l 
83.
		strKanton = objUser.st 
84.
		strPLZ = objUser.postalCode 
85.
		strCountry = objUser.co 
86.
		strCountry_Short = objUser.c 
87.
		If objUser.countryCode = "0" Then 
88.
			strCountry_Code = "" 
89.
		Else 
90.
			strCountry_Code = objUser.countryCode 
91.
		End If 
92.
 
93.
		'Accountdaten 
94.
		strUserPrincipalName = objUser.userPrincipalName 
95.
		strSamAccountName = objUser.samAccountName 
96.
		strUserWorkstations = objUser.userWorkstations 
97.
		strBadPwdCount = objUser.badPwdCount 
98.
		strUserAccountControl = objUser.userAccountControl 
99.
		If objUser.accountExpirationDate = "01.01.1601 02:00:00" Or objUser.accountExpirationDate = "01.01.1970" Then 
100.
			strAccountExpirationDate = "" 
101.
		Else 
102.
			strAccountExpirationDate = objUser.accountExpirationDate 
103.
		End If 
104.
				 
105.
		'Profildaten 
106.
		strProfilePath = objUser.profilePath 
107.
		strScriptPath = objUser.scriptPath 
108.
		strHomeDirectory = objUser.homeDirectory 
109.
		strHomeDrive = objUser.homeDrive 
110.
 
111.
		'Kontaktdaten 
112.
			'HomePhone 
113.
			If objUser.homePhone = "-" Then 
114.
				strHomePhone = "" 
115.
			Else 
116.
				strHomePhone = objUser.homePhone 
117.
			End If 
118.
			'OtherHomePhone 
119.
			If objUser.otherHomePhone = "-" Then 
120.
				strOtherHomePhone = "" 
121.
			Else 
122.
				strOtherHomePhone = objUser.otherHomePhone 
123.
			End If 
124.
			'Pager 
125.
			If objUser.pager = "-" Then 
126.
				strPager = "" 
127.
			Else 
128.
				strPager = objUser.pager 
129.
			End If 
130.
			'OtherPager 
131.
			If objUser.otherPager = "-" Then 
132.
				strOtherPager = "" 
133.
			Else 
134.
				strOtherPager = objUser.otherPager 
135.
			End If 
136.
			'Mobile 
137.
			If objUser.mobile = "-" Then 
138.
				strMobile = "" 
139.
			Else 
140.
				strMobile = objUser.mobile 
141.
			End If 
142.
			'OtherMobile 
143.
			If objUser.otherMobile = "-" Then 
144.
				strOtherMobile = "" 
145.
			Else 
146.
				strOtherMobile = objUser.otherMobile 
147.
			End If 
148.
			'FAX 
149.
			If objUser.facsimileTelephoneNumber = "-" Then 
150.
				strFAX = "" 
151.
			Else 
152.
				strFAX = objUser.facsimileTelephoneNumber 
153.
			End If 
154.
			'OtherFAX 
155.
			If objUser.otherFacsimileTelephoneNumber = "-" Then 
156.
				strOtherFAX = "" 
157.
			Else 
158.
				strOtherFAX = objUser.otherFacsimileTelephoneNumber 
159.
			End If 
160.
			'IPPhone 
161.
			If objUser.ipPhone = "-" Then 
162.
				strIPPhone = "" 
163.
			Else 
164.
				strIPPhone = objUser.ipPhone 
165.
			End If 
166.
			'OtherIPPhone 
167.
			If objUser.otherIpPhone = "-" Then 
168.
				strOtherIPPhone = "" 
169.
			Else 
170.
				strOtherIPPhone = objUser.otherIpPhone 
171.
			End If 
172.
			'Info 
173.
            strInfo = objUser.info 
174.
  
175.
		'Organisationsdaten 
176.
		strTitle = objUser.Title 
177.
		strDepartment = objUser.department 
178.
		strCompany = objUser.company 
179.
		strManager = objUser.manager 
180.
            	 
181.
		'Terminal Service- Daten 
182.
		strTerminalServicesProfilePath = objUser.TerminalServicesProfilePath 
183.
		strTerminalServicesHomeDirectory = objUser.TerminalServicesHomeDirectory 
184.
		strTerminalServicesHomeDrive = objUser.TerminalServicesHomeDrive 
185.
		strAllowLogon = objUser.AllowLogon 
186.
 
187.
		'Objektdaten auswertem 
188.
		strWhenCreated = objUser.whenCreated 
189.
		strWhenChanged = objUser.whenChanged 
190.
 
191.
		'Exchangedaten auswerten 
192.
		strHomeMDB = objUser.homeMDB 
193.
		strMailNickname = objUser.mailNickname 
194.
		strMsExchHomeServerName = objUser.msExchHomeServerName 
195.
		strHomeMTA = objUser.homeMTA 
196.
		strLegacyExchangeDN = objUser.legacyExchangeDN 
197.
		strDisplayNamePrintable = objUser.displayNamePrintable 
198.
		strMsExchHideFromAddressLists = objUser.msExchHideFromAddressLists 
199.
     
200.
    	'Diverses 
201.
    	strDistinguishedName = objUser.distinguishedName 
202.
    	 
203.
    	'LastLogin 
204.
    	strADSServer1 = "" 
205.
		strADSServer2 = "" 
206.
		strADSServer3 = "" 
207.
		 
208.
		If strClass = "user" Then 
209.
			Set objUser = GetObject("LDAP://ADS-Server1/" & strDistinguishedName) 
210.
	        strADSServer1 = objUser.LastLogin 
211.
			Set objUser = GetObject("LDAP://ADS-Server2/" & strDistinguishedName) 
212.
			strADSServer2 = objUser.LastLogin 
213.
			Set objUser = GetObject("LDAP://ADS-Server3/" & strDistinguishedName) 
214.
			strADSServer3 = objUser.LastLogin 
215.
		End If 
216.
     
217.
    'Werte an TXT- File übergeben   	 
218.
    TXTFile.WriteLine ("" & intID & ";" & strEmployeeID & ";" & strClass & ";" & strSN & ";" & strGivenName & ";" _ 
219.
    	& strDisplayName & ";" & strCN & ";" & strName & ";" & strInitials & ";" & strDescription & ";" & strOffice & ";" _ 
220.
    	& strPhone & ";" & strOtherPhone & ";" & strMail & ";" & strHomepage & ";" & strStreetAddress & ";" _ 
221.
    	& strPostOfficeBox & ";" & strCity & ";" & strKanton & ";" & strPLZ & ";" & strCountry & ";" & strCountry_Short & ";" _ 
222.
    	& strCountry_Code & ";" & strUserPrincipalName & ";" & strSamAccountName & ";" & strUserWorkstations & ";" _ 
223.
    	& strBadPwdCount & ";" & strUserAccountControl & ";" & strAccountExpirationDate & ";" & strProfilePath & ";" _ 
224.
    	& strScriptPath & ";" & strHomeDirectory & ";" & strHomeDrive & ";" & strHomePhone & ";" & strOtherHomePhone & ";" _ 
225.
    	& strPager & ";" & strOtherPager & ";" & strMobile & ";" & strOtherMobile & ";" & strFAX & ";" & strOtherFAX & ";" _ 
226.
    	& strIPPhone & ";" & strOtherIPPhone & ";""" & strInfo & """;" & strTitle & ";" & strDepartment & ";" & strCompany & ";" _ 
227.
    	& strManager & ";" & strTerminalServicesProfilePath & ";" & strTerminalServicesHomeDirectory & ";" _ 
228.
    	& strTerminalServicesHomeDrive & ";" & strAllowLogon & ";" & strWhenCreated & ";" & strWhenChanged & ";" & strHomeMDB & ";" _ 
229.
    	& strMailNickname & ";" & strMsExchHomeServerName & ";" & strHomeMTA & ";" & strLegacyExchangeDN & ";" _ 
230.
    	& strDisplayNamePrintable & ";" & strMsExchHideFromAddressLists & ";" & strDistinguishedName & ";" & strADSServer1 & ";" _ 
231.
    	& strADSServer2 & ";" & strADSServer3 & "") 
232.
    	   	 
233.
	'Nächster Datensatz auswählen 
234.
	objRecordSet.MoveNext 
235.
	 
236.
	'Counter und ID um jeweils 1 erhöhen 
237.
	intID = intID + 1 
238.
Loop 
239.
 
240.
'TXT- File schliessen 
241.
TXTFile.Close



DTS
Das DTS kann ich leider nicht posten.
Ich habe das ganze mit dem SQL Server Business Intelligence Development Studio zusammengeklickt.
Wie es genau funktioniert, kann ich nicht mehr sagen. Ich weiss nur das es funktioniert.

Aber wenn ich es geschafft habe, das schaffen das auch andere
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Active Directory CA öffentlich vertrauenswürdig machen, geht das? (2)

Frage von DeathangelCH zum Thema Windows Server ...

Windows Server
gelöst Active Directory File Extension - Associated Program (11)

Frage von adm2015 zum Thema Windows Server ...

Windows 8
gelöst Active Directory Default User.v2 Profile - Windows 8.1 Apps Error (4)

Frage von adm2015 zum Thema Windows 8 ...

Windows Server
Active Directory sinnvoll für kleine Firma (15)

Frage von WolfPeano zum Thema Windows Server ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...