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

Via vbs department aus AD auslesen und in Variable speichern

Frage Entwicklung Batch & Shell

Mitglied: RetroDude

RetroDude (Level 1) - Jetzt verbinden

21.09.2012, aktualisiert 16:21 Uhr, 4157 Aufrufe, 10 Kommentare

Hallo

Ich versuche mit fogendem Script das Department Attribut eines spezifischen Users (%Username% weil per Loginscript) in eine Variable zu schreiben. Diese brauche ich für weitere Zwecke beim Login. Ich habe aber Probleme mit dem LDAP Zugriff für die Usersuche. Kann mir da jemand helfen?

01.
 
02.
Set wshShell = CreateObject( "WScript.Shell" ) 
03.
strUsername = WshShell.ExpandEnvironmentStrings("%USERNAME%") 
04.
username = strUsername 
05.
 
06.
 
07.
Set objRoot = getobject("LDAP://RootDSE") 
08.
domainname = objRoot.get("defaultNamingContext") 
09.
wscript.echo  finduser(username,domainname) 
10.
 
11.
  
12.
Function FindUser(Byval UserName,Byval Domain) 
13.
 on error resume next 
14.
 
15.
 set cn = createobject("ADODB.Connection") 
16.
 set cmd = createobject("ADODB.Command") 
17.
 set rs = createobject("ADODB.Recordset") 
18.
 
19.
 cn.open "Provider=ADsDSOObject;" 
20.
  
21.
cmd.activeconnection=cn 
22.
cmd.commandtext="SELECT ADsPath FROM ‘LDAP://" & Domain & "‘ WHERE sAMAccountName = ‘" & UserName & "‘" 
23.
WScript.Echo cmd.CommandText  
24.
 set rs = cmd.execute 
25.
 
26.
 if err<>0 Then 
27.
  FindUser="Error connecting to Active Directory Database:" & err.description 
28.
 else 
29.
  if not rs.BOF And not rs.EOF Then 
30.
        rs.MoveFirst 
31.
        FindUser = rs(0) 
32.
  Else 
33.
   FindUser = "Not Found" 
34.
  end If 
35.
 end If 
36.
 cn.close 
37.
end Function 
38.
 
Mitglied: 60730
21.09.2012 um 13:57 Uhr
Moin,


warum so kompliziert?
Ich versuche mit fogendem Script das Department Attribut eines spezifischen Users (%Username% weil per Loginscript) in eine Variable zu schreiben.

  • das bedeutet doch jeder User muß bei jeder Anmeldung die AD abfragen und dann noch via vbs...
Diese brauche ich für weitere Zwecke beim Login.

  • Warum nicht ganz simpel irgendwas a'la
01.
dsquery user -limit 0 |dsget user -samid -dept>\\server\freigabe\datei.suffix
einmal am Tag auf nem Server laufen lassen (so oft werden sich die Departement Infos ja nicht ändern)
Und der User sucht sich mit ner kurzen schleife aus der Textdatei seinen Usernamen und das dazugehörige Department aus?

Oder wenn dir das zu komplex ist ein
01.
dsquery user -samid %username% |dsget user -dept|findstr /v "dept dsget"
tuts doch auch, wenn die dstools auf ner für den user zugänglichen Freigabe liegen?
Bitte warten ..
Mitglied: RetroDude
21.09.2012 um 14:06 Uhr
Hallo

Das ist nicht so tragisch. ich werde die Suche auf eine Struktur eingrenzen. Dieser script läuft nicht bei jedem Login, sondern nur wenn eine bestimmte Applikation installiert wurde. Und dan nur beim ersten Login nach der Installation. Ich will den direkten Zugriff auf die AD. Diese Source ist stets aktuell. Mein Problem ist der LDAP Connect. Hast Du ne Idee wieso?

Gruss
Bitte warten ..
Mitglied: 60730
21.09.2012, aktualisiert um 14:32 Uhr
Moin,

naja - neee ...

ich versteh es nicht...

  • wo liesst du denn die department nummer aus?
  • und wie funktioniert eine Abfrage %username% per LDAP, wenn du

01.
  Else  
02.
   FindUser = "Not Found"  
03.
  end If 
sowas da drin hast - die Abfrage ist doch flüssiger als flüssig überflüssig?

Wobei der Bock ja wohl in Zeile 22 zu suchen ist

01.
cmd.commandtext="SELECT ADsPath FROM 'LDAP://" & Domain & "' WHERE sAMAccountName = '" & UserName & "'"
ganz kleine aber feine Unterschiede
Bitte warten ..
Mitglied: RetroDude
21.09.2012 um 16:07 Uhr
Hallo

Ich habe mir gedacht so:

01.
Set objUser = finduser(username,domainname) 
02.
strUserDepartment = objUser.Get("department")
bin mir noch nicht sichr obs klappt.. wie siehst Du das? Hatte gerade keine Zeit für meinen Skript, bin deshalb noch nicht weiter..

Gruss und Danke!
Bitte warten ..
Mitglied: 60730
21.09.2012, aktualisiert um 16:18 Uhr
Salve,

wie ich mir das gedacht hab?
Stand doch oben schon

Und wie oben angedeutet, ich steh halt in Sachen Loginscript auf nen Quickie, dessen Quellcode ich via eine Zigarettenlänge per Rauchzeichen durchmorsen kann.

Ps: Das Problem "Probleme mit LDAP Zugriff aus VBScript" ist dann wohl gelöst?
Änder den Titel um in "via vbs department aus AD auslesen" um, dann findet sich betimmt jemand, der lange Scripte mag.

Gruß ich hab jetzt Eierfabend und Ochenwende
Bitte warten ..
Mitglied: RetroDude
21.09.2012 um 16:25 Uhr
Hallo

Das Problem liegt in der Tat in der von Dir erwähnten Zeile, ich weis nur nicht warum... Diese Funktio ist ergänzend für ein monströses vbscript. deshalb muss das reinpassen und flexibel bleiben.
Den Not Found kann man als negativen Rückgabewert verstehen..
Danke trotzdem!
Bitte warten ..
Mitglied: bastla
21.09.2012, aktualisiert um 19:19 Uhr
Hallo RetroDude und Limbo!

Ich würde das (wenn es doch eh immer um den aktuellen User gehen soll) etwas kompakter versuchen:
01.
Set User = GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName) 
02.
WScript.Echo User.Department
Abgesehen davon: Auch mit der von Limbo vorgeschlagenen Zeile 22 kein Erfolg?

Grüße
bastla
Bitte warten ..
Mitglied: 60730
22.09.2012 um 09:50 Uhr
Moin,
(ot)

@ bastla: die frage hatte vorher ne andere ueberschrift.

@To: schau dir die betreffende zeile mal genau an, das ist ein moechtegern sql statement und sql "braucht" genau dieses zeichen, nicht das andere (mein eipad kann weder das eine, noch das andere).

(/ot)

Gruss
Bitte warten ..
Mitglied: RetroDude
22.09.2012 um 11:29 Uhr
Hallo zusammen

Danke für den Input. Werde es nächste Woche versuchen.

Schönes Wochendende Euch beiden.

Gruss
Retrodude
Bitte warten ..
Mitglied: RetroDude
25.09.2012 um 17:38 Uhr
funktioniert wunderbar! Danke für diese elegante Lösung Bastla!

Gruss
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Wert in Registry suchen und in Variable speichern (2)

Frage von J.Troll zum Thema Batch & Shell ...

VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
Eventlog Druckjobs mit VBS auslesen (2)

Frage von joni2000de zum Thema Batch & Shell ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

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

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

Frage von Haures zum Thema Windows Server ...