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

AD auslesen und in Variable speichern (VBS und HTA)

Frage Entwicklung Batch & Shell

Mitglied: Borob14

Borob14 (Level 1) - Jetzt verbinden

10.11.2014, aktualisiert 11.11.2014, 1607 Aufrufe, 4 Kommentare

Hallo zusammen,

ich benötige einen Script der zu einem angegebenen User ein AD-Attribut ausliest und dieses in einer Variable speichert.
Ich habe bereits mehrere Skripte gefunden, allerdings lesen diese immer nur den angemeldeten User aus.
Hat eventuell schon jemand ein passendes Skript? Vielleicht bin ich einfach nur blind bei der Suche.

Bitte wenn möglich in VBS da ich das Script in eine HTA einbauen will und mit der Variable weitermachen will.

Zweck des ganzen: Ich bastle gerade an einem Laufwerksmapper der den Loginscript (scriptPath) des eingetragenen Users ausführen soll.
Das ist nötig, da die User nicht mit Ihrem Account angemeldet sind.

Das HTA mit Eingabe Feld ist bereits schon fertig, nur fehlt mir die Möglichkeit an die Variable "Scriptpath" und "homeDirectory" zu kommen, um diese dann auszuführen bzw. zu Mappen.

Danke

Mit freundlichen Grüßen Rob


EDIT:
Habe einen Code gefunden, welcher allerdings nur die OU Users ausliest, vielleicht ist es nicht all zu schwer den umzubauen?
01.
' Öffnet eine Messagebox und frägt nach einem Usernamen 
02.
name = InputBox("Name des auszulesenden AD Kontos?") 
03.
Set objKonto = FindAccount(name) 
04.
 
05.
Beschreibung = objkonto.description 
06.
 
07.
' Öffnet eine Messagebox und gibt den Inhalt des Users (Feld Beschreibung) aus. 
08.
Msgbox Beschreibung 
09.
 
10.
 
11.
Function FindAccount(ByVal strName) 
12.
Set RootDSE = GetObject("LDAP://RootDSE") 
13.
path = "LDAP://" & RootDSE.get("DefaultNamingContext") 
14.
sql = "SELECT ADsPath FROM '" & path & "' WHERE objectClass='User' and name='" & strName & "'" 
15.
 
16.
Set objconn = CreateObject("ADODB.Connection") 
17.
Set objcomm = CreateObject("ADODB.Command") 
18.
objconn.Provider = "ADsDSOObject" 
19.
objconn.open "Active Directory Provider" 
20.
 
21.
Set objcomm.ActiveConnection = objconn 
22.
 
23.
objcomm.CommandText = sql 
24.
objcomm.Properties("Page Size")=50 
25.
objcomm.Properties("Searchscope") = 2 
26.
 
27.
Set rs = objcomm.Execute 
28.
 
29.
If rs.eof Then 
30.
Set FindAccount = Nothing 
31.
Else 
32.
Set FindAccount = GetObject(rs("ADsPath")) 
33.
End If 
34.
End Function
Mitglied: Xaero1982
10.11.2014 um 11:34 Uhr
Moin,

irgendwie unklar was du vor hast.

User Hans meldet sich trotz AD nicht mit Hans an sondern mit User01?
Dann willst du was von Hans auslesen? Und dann das Laufwerk von Hans mappen?

Dir ist aber klar, dass es hier abgesehen von diversen NTFS Sicherheitseinstellungen die du bearbeiten musst damit das geht ein riesiges Datenschutzloch aufreißt?

Welcher Sinn steckt dahinter?
Wenns ein AD mit den Nutzern gibt sollen sie sich doch damit anmelden?

Grüße
Bitte warten ..
Mitglied: colinardo
LÖSUNG 10.11.2014, aktualisiert 11.11.2014
Hallo Bob,
da gebe ich Xaero absolut recht, du müsstest die Rechte im AD so anpassen das jeder User die Attribute der anderen lesen darf.
Ansonsten geht das auslesen eines bestimmten Users z.B. so (ausreichende AD Rechte vorausgesetzt)
01.
Set objUser = GetObject("LDAP://cn=maxmuster,ou=management,dc=domain,dc=com") 
02.
Wscript.Echo "Profile Path: " & objUser.ProfilePath 
03.
Wscript.Echo "Script Path: " & objUser.ScriptPath 
04.
Wscript.Echo "Home Directory: " & objUser.HomeDirectory 
05.
Wscript.Echo "Home Drive: " & objUser.HomeDrive
-edit- oder so
01.
strName = InputBox("Bitte Usernamen eingeben") 
02.
set objUser = FindAccount(strName) 
03.
if not objUser is nothing then 
04.
	msgbox "HomeDirectory des Users: " & objUser.HomeDirectory 
05.
else 
06.
	msgbox "Kein User mit diesem Loginnamen gefunden" 
07.
End if 
08.
 
09.
Function FindAccount(strUserName) 
10.
	On Error Resume Next 
11.
	Dim adoCommand, adoConnection 
12.
	Dim varBaseDN, varFilter 
13.
	Dim objRootDSE, varDNSDomain, strQuery, adoRecordset 
14.
 
15.
	Set adoCommand = CreateObject("ADODB.Command") 
16.
	Set adoConnection = CreateObject("ADODB.Connection") 
17.
	adoConnection.Provider = "ADsDSOObject" 
18.
	adoConnection.Open "Active Directory Provider" 
19.
	Set adoCommand.ActiveConnection = adoConnection 
20.
	 
21.
	' Search entire Active Directory domain. 
22.
	Set objRootDSE = GetObject("LDAP://RootDSE") 
23.
	 
24.
	varDNSDomain = objRootDSE.Get("defaultNamingContext") 
25.
	varBaseDN = "<LDAP://" & varDNSDomain & ">" 
26.
	 
27.
	' Filter for user objects. 
28.
	varFilter = "(&(objectCategory=person)(objectClass=user)(SamAccountName=" & strUserName & "))" 
29.
	 
30.
	' Construct the LDAP syntax query. 
31.
	adoCommand.CommandText = varBaseDN & ";" & varFilter & ";ADSPath;Subtree" 
32.
	adoCommand.Properties("Page Size") = 2 
33.
	adoCommand.Properties("Timeout") = 20 
34.
	adoCommand.Properties("Cache Results") = False 
35.
	Set adoRecordset = adoCommand.Execute 
36.
	adoRecordset.MoveFirst 
37.
 
38.
	If adoRecordset.RecordCount > 0 Then 
39.
		set FindAccount = GetObject(adoRecordset("ADSPath")) 
40.
	else 
41.
		set FindAccount = Nothing 
42.
	End If 
43.
	 
44.
	adoRecordset.Close 
45.
	adoConnection.Close 
46.
End Function
Grüße Uwe
Bitte warten ..
Mitglied: Borob14
10.11.2014, aktualisiert um 12:47 Uhr
Zu Erklärung warum,

wir haben diverse Leihnotebooks und Präsentations-PCs auf diesen wird ein Nutzer zur Anmeldung genommen der keine Rechte hat.
Das HTA Tool ist nur dafür da, dass jemand trotzdem an seine Daten kommt. Er muss dazu sein Kürzel und verdecktes Passwort eingeben und sobald das Tool geschlossen wird, werden alle LW wieder entfernt. In unserem Loginscript werden nur Laufwerke gemappt nichts anderes.

Die Grundlage ist im Prinzip, das nicht 100erte Profile auf den Geräten angelegt werden müssen und nur ein Profil gepflegt werden muss.

@Uwe werde deinen Script mal testen danke.

Mit freundlichen Grüßen Rob


EDIT: @Uwe dein Script bedingt das alle User in der gleichen OU sind -> ist aber nicht der Fall (wir haben sehr viele OUs Standdort bezogen also auch nicht nutzbar)
Bitte warten ..
Mitglied: Borob14
10.11.2014 um 13:44 Uhr
Hab selber was gefunden und angepasst:
<code>
Option Explicit

Const title = "Eigenschaften Benutzerkonto"

DIM oDomain, oUser
DIM user, domain, UserFlags
DIM txt, tmp
Dim Message

domain = "//test"
user = "t01"

Message = "Bitte Benutzername eingeben " & vbCRLF & _
"oder Abbrechen anklicken" & vbCRLF & _
"Verbindung mit " & domain & "/" & user

' Hole Benutzername
user = GetUser (user, Message, title)

' Binde an User-Objekt in Domain (über aktuellen Account)
Set oUser = GetObject("WinNT:" & domain & "/" & user)

' Init Text
txt = "Domäne: " & domain & vbCRLF

' Lese Eigenschaften
txt = txt & "Benutzername: " & oUser.Name & vbCRLF
txt = txt & "Vollständiger Name: " & oUser.FullName & vbCRLF
txt = txt & "Beschreibung: " & oUser.Description & vbCRLF & vbCRLF

' Hole Benutzerflags:
' uFlags = oUser.Get("UserFlagser Kurzform
UserFlags = oUser.UserFlags

txt = txt & "Laufwerk:" & oUser.HomeDirDrive & ":" & oUser.homeDirectory & vbCRLF
txt = txt & "Anmeldescript:" & oUser.LoginScript & vbCRLF

MsgBox txt, vbOKOnly + vbInformation, Title

' ### Helfer
Function GetUser (Value, Message, Title)
Dim tmp
' Domainname abfragen
tmp = inputbox (Message, Title , Value)
If tmp = "" Then
GetUser = Value
Else
GetUser = tmp
End if
End Function
' Ende
<\code>
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
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 ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

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

Frage von Haures zum Thema Windows Server ...