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

VBSkript um Attribute für AD-User zu ändern

Frage Entwicklung

Mitglied: RustyVS

RustyVS (Level 1) - Jetzt verbinden

12.12.2014, aktualisiert 14:38 Uhr, 901 Aufrufe, 3 Kommentare

Hallo zusammen,

ich versuche ein VBSkript zu erstellen, dass für alle Benutzer in unserer AD das extensionAttribut10 setzt.
Dazu hab ich bereits eine CSV-Datei (BoxNr.csv) mit allen Benutzern und dem dazu gehörenden Wert, welcher als Attribut gesetzt werden soll, angelegt.

Beispiel:
01.
extensionAttribute10;CN 
02.
3000;Meyer\, Marko 
03.
3001;Müller\, Maria 
04.
...

Als weiteres habe ich auch schon ein Script, mit dem ich einzelne Benutzer bearbeiten kann.

01.
Set objUser = GetObject _ 
02.
   ("LDAP://CN=Meyer\, Marko,OU=Benutzer,OU=produktion,DC=firma,DC=local")  
03.
 
04.
  
05.
objUser.Put "extensionAttribute10", "3000" 
06.
 
07.
  
08.
objUser.SetInfo
Nun würde ich gerne das Skript umschreiben, damit die Benutzer und Attribute aus der CSV-Datei ausgelesen werden und die Attribute in der AD automatisch gesetzt werden.

Ich wäre sehr Dankbar, wenn mir hier jemand helfen könnte!

MFG Rusty
Mitglied: 114757
12.12.2014, aktualisiert um 13:46 Uhr
Moin,
z.B. so
01.
set fso = CreateObject("Scripting.FilesystemObject") 
02.
arrContent = Split(fso.OpenTextFile("C:\BoxNr.csv",1).ReadAll(),vbNewline) 
03.
 
04.
for i = 1 to UBound(arrContent) 
05.
  if arrContent(i) <> "" then 
06.
    arrCols = Split(arrContent(i),";") 
07.
    Set objUser = GetObject("LDAP://cn=" & arrCols(1) & ",OU=Benutzer,OU=produktion,DC=firma,DC=local")  
08.
    objUser.put "extensionAttribute10",arrCols(0) 
09.
    objUser.SetInfo 
10.
  End if 
11.
Next 
12.
msgbox "Feddich"
Gruß jodel32
Bitte warten ..
Mitglied: colinardo
LÖSUNG 12.12.2014, aktualisiert um 14:38 Uhr
Hallo Rusty,
ich würde es zwar mit Powershell machen (ist da ein Einzeiler), aber hier noch eine VBS Lösung wenn vorher nicht klar ist in welcher OU sich der User befindet:
Hinweis: Für dieses Script musst du keinen Backslash für den Usernamen in der CSV-Datei setzen.
01.
Const CSV = "C:\BoxNr.csv" 
02.
Dim fso, arrContent,arrCols,objUser 
03.
 
04.
set fso = CreateObject("Scripting.FilesystemObject") 
05.
arrContent = Split(fso.OpenTextFile(CSV,1).ReadAll(),vbNewline) 
06.
 
07.
for i = 1 to UBound(arrContent) 
08.
  if arrContent(i) <> "" then 
09.
    arrCols = Split(arrContent(i),";") 
10.
    Set objUser = FindAccount(Trim(arrCols(1))) 
11.
    if not objUser is nothing then 
12.
	objUser.put "extensionAttribute10",Trim(arrCols(0)) 
13.
    	objUser.SetInfo 
14.
    End if 
15.
  End if 
16.
Next 
17.
 
18.
Function FindAccount(cn) 
19.
	On Error Resume Next 
20.
	Dim adoCommand, adoConnection 
21.
	Dim varBaseDN, varFilter 
22.
	Dim objRootDSE, varDNSDomain, strQuery, adoRecordset 
23.
 
24.
	Set adoCommand = CreateObject("ADODB.Command") 
25.
	Set adoConnection = CreateObject("ADODB.Connection") 
26.
	adoConnection.Provider = "ADsDSOObject" 
27.
	adoConnection.Open "Active Directory Provider" 
28.
	Set adoCommand.ActiveConnection = adoConnection 
29.
	 
30.
	' Search entire Active Directory domain. 
31.
	Set objRootDSE = GetObject("LDAP://RootDSE") 
32.
	 
33.
	varDNSDomain = objRootDSE.Get("defaultNamingContext") 
34.
	varBaseDN = "<LDAP://" & varDNSDomain & ">" 
35.
	 
36.
	' Filter for user objects. 
37.
	varFilter = "(&(objectCategory=person)(objectClass=user)(cn=" & cn & "))" 
38.
	 
39.
	' Construct the LDAP syntax query. 
40.
	adoCommand.CommandText = varBaseDN & ";" & varFilter & ";ADSPath;Subtree" 
41.
	adoCommand.Properties("Page Size") = 2 
42.
	adoCommand.Properties("Timeout") = 20 
43.
	adoCommand.Properties("Cache Results") = False 
44.
	Set adoRecordset = adoCommand.Execute 
45.
	adoRecordset.MoveFirst 
46.
 
47.
	If adoRecordset.RecordCount > 0 Then 
48.
		set FindAccount = GetObject(adoRecordset("ADSPath")) 
49.
	else 
50.
		set FindAccount = Nothing 
51.
	End If 
52.
	 
53.
	adoRecordset.Close 
54.
	adoConnection.Close 
55.
End Function
Grüße Uwe

-edit- hier noch als Ergänzung eine Lösung mit Powershell (hier ebenfalls in der CSV-Datei keinen Backslash im CN setzen):
01.
import-csv "C:\BoxNr.csv" -Delimiter ";" | %{$wert=$_.extensionAttribute10; get-aduser -Filter "cn -eq '$($_.cn)'" | set-aduser -Replace @{"extensionAttribute10"=$wert}}
Bitte warten ..
Mitglied: RustyVS
12.12.2014 um 14:40 Uhr
Vielen Dank für die schnellen Lösungen!

Hat perfekt funktioniert.


MfG Rusty
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Windows Server
gelöst Powershell - AD-Export bestimmter OU bzw. User und Attributen auslesen (4)

Frage von oliver12 zum Thema Windows Server ...

Windows Server
gelöst Fileserver AD ändern (3)

Frage von homermg zum Thema Windows Server ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(2)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
gelöst Leiten "dumme" Switches VLAN-Tags mit durch? (26)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

Netzwerkgrundlagen
Kann auf Freigabe nicht Zugreifen (18)

Frage von leon123 zum Thema Netzwerkgrundlagen ...

Windows Server
gelöst Neues KB für W10 1607 und W2K16 wieder mal nicht im WSUS 3.0, hat das noch jemand? (16)

Frage von departure69 zum Thema Windows Server ...

Windows Server
DC virtualisieren + wie sichern (SingleDC-Environment) (12)

Frage von KMUlife zum Thema Windows Server ...