Top-Themen

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

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, 1802 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 ..
Ähnliche Inhalte
Batch & Shell
In hta-Datei ein Textfeld mit einer Variable füllen?
gelöst Frage von AlbertMinrichBatch & Shell3 Kommentare

Hallo, ich fülle beim Start einer hta-Datei eine Variable (myvari) mit einem Wert. Diese Variable will ich an ein ...

Batch & Shell
(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern
gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell
Variablen von Batch zu VBS übergeben
gelöst Frage von ciejayBatch & Shell10 Kommentare

Hallo liebe Com, ich versuche mich gerade in der Batch und vbs Programmierung und bin daher sozusagen noch Anfänger. ...

Batch & Shell
Variable aus VBS in Batch einlesen
gelöst Frage von racer1601Batch & Shell4 Kommentare

Hallo ich habe das Problem das ich die Variable "Ordner" aus einem VBS Script nicht in meine Batch bekomme. ...

Neue Wissensbeiträge
Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 22 MinutenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 14 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 18 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 18 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...