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, 815 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Userverwaltung
gelöst Set AD User Attribute (2)

Frage von joehuaba zum Thema Windows Userverwaltung ...

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

Frage von Estefania zum Thema Windows Server ...

Windows Server
gelöst Wie AD User sauber löschen? (34)

Frage von McLion zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

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 ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...