Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

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

Exchange Server
MS Exchange Attribute anzeigen (2)

Frage von Xaero1982 zum Thema Exchange Server ...

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

Frage von homermg zum Thema Windows Server ...

Neue Wissensbeiträge
Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(6)

Information von LordGurke zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...