Top-Themen

Aktuelle Themen (A bis Z)

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, 7054 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 ..
Ähnliche Inhalte
Datenbanken
SQL 2000 DB ist Fehlerverdächtig
Frage von franksigDatenbanken3 Kommentare

Hallo Ich habe einen alten SQL 2000 bei dem wohl eine DB defekt ist im Management Studio Express ist ...

Windows Server
Active Directory Vertrauensstellung
Frage von ukulele-7Windows Server11 Kommentare

Ich muss sagen das ist meine erste Vertrauensstellung. Ich habe sie in unserer alten AD ads.domain.local Windows 2003 und ...

Windows Server
Mit Tastenkürzel im Active Directory navigieren?
gelöst Frage von Fish01Windows Server3 Kommentare

Hallo! Folgender Fall als Beispiel: Habe in einer OU ca. 100 User und möchte zB: bei jedem User kontrollieren, ...

Windows Server
Active Directory - Umlaute ersetzen
gelöst Frage von duschgasWindows Server5 Kommentare

Hallo liebe Community, Ich besitze ein AD, das historisch gewachsen ist. Unter anderem enthält es Umlaute wie Ä Ü ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 15 StundenMikroTik RouterOS6 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 15 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 18 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 22 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Festplatten, SSD, Raid
USB Stick recovery
Frage von petereFestplatten, SSD, Raid15 Kommentare

Hallo, ich habe einen defekten USB-Stick, der nicht mehr lesbar ist. Er wird in WIN als unbekanntes Volume mit ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...