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

OU des User Abfragen

Frage Entwicklung Batch & Shell

Mitglied: unique24

unique24 (Level 2) - Jetzt verbinden

16.04.2007, aktualisiert 23.04.2007, 13760 Aufrufe, 12 Kommentare

über Script

Hallo

Ich möchte gerne über ein vbs Script, Netzwerk Freigaben mappen.

Beispiel:
User x aus der OU:Personal,OU:Elektrik soll mit Freigabe \\w03team3\Elektrik und LW U: verbunden werden.

per Batch:
net use U: \\w03team3\Elektrik /p:n

Nun möchte ich aber Variablen nutzen. Dazu müßte ich über das Script die OU´s herausbekommen, welcher der User angehört, der das Script ausführt.

Ich programmiere zwar mit vb.net aber die OU´s kann ich nicht auslesen.
Hat hier jemand eine kurze Hilfe?
Das Zuweisen in vb der Freigaben ist mir auch noch unbekannt ... aber da könnte ich ein .cmd mit Paramter des OU starten.
Den Rest müßte ich dann schon sellbst heraus bekommen.

Für einen Tipp den OU des Users zu bekommen, der das Script startet, wäre ich dankbar!

Hannes

PS: Wäre das auch mit reinem Batch möglich?

[Edit Biber 29.5.07] Wegen des Verlaufs des Beitrags und der schönen Skripting-Links am Ende (THX @bastla) verschoben von "Windows Server" nach "Batch & Shell" (dem Sammelbecken für Script-Lösungen hier im Forum).
[/Edit]
Mitglied: datasearch
16.04.2007 um 17:01 Uhr
ich hab KA von VB, aber für andere zwecke mache ich einen ldap-query nach dem DN und nutze "=" und "," als trennzeichen. zb. die ausgabe "cn=user user,cn=builtin,dc=irgendwas,dc=irgendwas" zuerst per "," trennen und die benötigten felder dann nochmal mit "=" als trennzeichen zerlegen.

1. Stufe - Trennen mit "," als Feldtrenner
"cn=user user"
"cn=builtin" <<< Benötigte OU
"dc=rgendwas"
"dc=irgendwas"
2. Stufe - Die benötigten felder mit "=" nochmal trennen
"builtin"

Naja, ist nur nen ansatz. Vieleicht kannst das ja irgendwie in dem VB einsetzen.
Bitte warten ..
Mitglied: problemsolver
16.04.2007 um 17:24 Uhr
Hi!

vielleicht geht es einfacher, wenn Du alle Benutzer der OU in eine Sicherheitsgruppe packst und dann mit ifmember die Gruppenzugehörigkeit abfragst? Hierbei kannst Du dann auch die Zugehörigkeit zu mehreren Gruppen geschickt im Script ausnutzen.

Gruß

Markus
Bitte warten ..
Mitglied: unique24
16.04.2007 um 18:05 Uhr
Hallo Markus

Beschäftige mich mit Win 2003 Server erst seit 2 Wochen ... im Moment lerne ich mir Active Directory.
Daher sind meine Kenntnisse noch sehr bescheiden.

In Punkto Sicherheitsgruppe wollt ich mich auch schon einlesen .. werde ich heute noch machen!

ifmember werde ich einmal googlen ... oder hast du eventuell ein Beispiel?

@datasearch
ein LDAP Query ist mir neu ... machst du das in einer Batch Umgebung?
Leider kann ich dadurch dein Beispiel nicht auflösen

Gruß
Hannes
Bitte warten ..
Mitglied: problemsolver
16.04.2007 um 20:50 Uhr
Hi!

Klar hab ich ein Beispiel... Sorry. Hätte ich auch schon längst posten können

01.
%logonserver%\netlogon\tools\ifmember "Geschaeftsleitungsteam" 
02.
if %errorlevel% EQU 1 @net use g: \\fileserver\geschaeftsleitung$ /yes /persistent:yes
Sobald ein Benutzer ein Mitglied der Gruppe ist, wird von ifmember der errorcode 1 zurückgeliefert.
Durch eine Errorlevelabfrage kannst du somit bestimmen, ob jemand Mitglied ist oder nicht und dann dementsprechend einen nachfolgenden Befehl ausführen:
01.
@net use g: \\fileserver\geschaeftsleitung$ /yes /persistent:yes
Schau dir einfach mal den Syntax von "net use" an. Start->Ausführen->CMD->net use /?
Ein Tipp: Ein $-Zeichen am Ende einer Freigabe versteckt die Freigabe vor allzu neugierigen Mitarbeitern, dich sich im Netz umschauen möchten. (aber man sollte dennoch die richtigen Sicherheitsberechtigungen stets setzen...)

Das Tool ifmember ist ein Bestandteil des Resource Kits von Microsoft. Das Tool lädst du hier herunter:

Ifmember Download

Lege Tools im Netlogon Verzeichnis deines Anmeldeservers in der Domäne ab. Für mich hat es sich bewährt ein Unterverzeichnis Tools anzulegen, so dass man den Überblick nicht verliert.

Ansonsten wünsch ich noch viel Erfolg. Eventuell würde ich dir noch ein paar Batch-Tutorials empfehlen, wenn Du dich dort einlesen möchtest.

Gruß

Markus
Bitte warten ..
Mitglied: unique24
17.04.2007 um 07:00 Uhr
Guten Morgen Markus

Ok, ifmember verstanden, vielen Dank.

Führt mich aber noch nicht zu meinem Ziel.
Ich möchte ja die Freigabe mit dem Namen der OU des Users verknüpfen.
Somit bräuchte ich die OU in einer Variable, welches ich dann in net use einsetzen kann:
net use U: \\w03team3\Abteilung\%1% /p:n

wobei %1 die OU darstellt ... eventuell starte ich das Script mit Parameter und trage es in jeder Abteilung ein.
Somit bekommt jeder das Netzlaufwerk verbunden, für seine Abteilung.

Interessant wäre eben gewesen, die OU auszulesen und somit ohne Paramter zu starten, was den Arbeitsaufwand eben etwas reduziert.

In Batch Tutorials würde ich mich SEHR gerne einlesen!

Gruß

Hannes
Bitte warten ..
Mitglied: Biber
17.04.2007 um 20:01 Uhr
Moin unique24,

willkommen im Forum.

Für Deine zuletzt gepostete Strategie gibt es ein paar Standalone-ListGroup-Tools, aber das ist ja so schnell per VBS zusammengeklimpert, da lohnt sich ein Downloaden gar nicht.

Schnelles .VBS-Beispiel:
01.
'----Snipp ListGroups.vbs [gedacht in einem Login/Mapping-Skript] 
02.
Set objSysInfo = CreateObject("ADSystemInfo") 
03.
Set objNetwork = CreateObject("Wscript.Network") 
04.
 
05.
strUserPath = "LDAP://" & objSysInfo.UserName 
06.
Set objUser = GetObject(strUserPath) 
07.
 
08.
For Each strGroup in objUser.MemberOf 
09.
    strGroupPath = "LDAP://" & strGroup 
10.
    Set objGroup = GetObject(strGroupPath) 
11.
    strGroupName = objGroup.CN 
12.
    wscript.echo strGroupName 
13.
'    Select Case strGroupName 
14.
'        Case "Elektrik" 
15.
'            objNetwork.MapNetworkDrive "U:" , "\\w03team3\Elektrik"  
16.
'         
17.
' eventuell Home-Laufwerk ?         
18.
'            objNetwork.MapNetworkDrive "H:", "\\w03team\Users\" & objUser.sAMAccountName 
19.
'             
20.
'        Case "Beschwerdeabteilung" 
21.
'            objNetwork.MapNetworkDrive "X:", "\\server666\Garbage 
22.
' ........             
23.
'    End Select 
24.
Next
Der Schnipsel OHNE die mit "'" auskommentierten Zeilen würde nur die Gruppen auflisten, denen der User angehört.
Und das könntest Du dann wiederum im Batch mit einer FOR/F-Anweisung abfackeln.

Aufruf im Batch:
01.
cscript //nologo DerSchipselOben.vbs 
02.
-bzw-  
03.
For /f %%i in ('cscript //nologo DerSchipselOben.vbs') do ( 
04.
   if /i [%%i] == [Elektrik] net use U: \\w03team3\Elektrik /p:n 
05.
   if /i [%%i] == [Kantine] net use U: \\wuergteam\Reste /p:n 
06.
   .... 
07.
)

[ungetestete Skizzen!]

Gruss
Biber
Bitte warten ..
Mitglied: datasearch
19.04.2007 um 18:02 Uhr
hallo biber,

nicht schlecht, soviel zu VB.
Da kannst du sicher auch die OU aus dem LDAP$ parsen.

Denn, wenn das im VB geht kann ich mein for /f ... batch-konstrukt wegschmeissen -g-. (frag nicht für was aber ich brauch ne liste aller OU´s in der User liegen)

grüße,

datasearch
Bitte warten ..
Mitglied: Biber
19.04.2007 um 19:18 Uhr
Moin datasearch,

alle OUs auflisten, in denen User sind? *kopfkratz*
Ungewöhnlich... weil, eigentlich müsstest Du die doch kennen...

Aber what shalls, wie der Lateiner sagt...

Schnell hingeschreddert wäre dieser Schnipsel für den Zweck:
01.
'-----ListAllOUs.vbs 
02.
Dim cn, rs, root, domain, strdomain, strtest 
03.
Set cn = CreateObject("ADODB.Connection") 
04.
set rs = CreateObject("ADODB.Recordset") 
05.
Set root = GetObject("LDAP://rootDSE")  
06.
strdomain = root.Get("defaultNamingContext")  
07.
 
08.
Set domain = GetObject("LDAP://" & strdomain)  
09.
 
10.
cn.ConnectionString = "Data Source=Active Directory Provider;Provider=ADsDSOObject"  
11.
cn.Open  
12.
 
13.
rs.ActiveConnection = cn  
14.
rs.Source = "<" & domain.ADsPath & ">;(&(objectCategory=OrganizationalUnit));distinguishedName"  
15.
' Anmerkung --- vielleicht reicht Dir statt "distinguishedname" auch einfach "name". Ausprobieren. 
16.
rs.Open  
17.
 
18.
Do While Not rs.EOF  
19.
    wscript.echo rs.Fields(0) 
20.
    rs.MoveNext  
21.
Loop  
22.
 
23.
rs.Close  
24.
cn.Close  
25.
Set rs = Nothing  
26.
Set cn = Nothing 
...aufzurufen wieder mit
01.
cscript //nologo [Lw:\Pfad\]ListOUs.vbs
Auf die Gefahr hin, dass ich verkalkt erscheine.... wie ist denn Dein geplantes Vorgehen??
Ich dachte, Du wolltest über eine Gruppenzugehörigkeit der Benutzer (sprich: Benutzername ist der einzig feste Punkt im Raum) irgendwelche Mappings machen.

Kannst Du noch mal kurz den Plan/ die Anforderung skizzieren?

Gruss
Biber
Bitte warten ..
Mitglied: unique24
21.04.2007 um 15:42 Uhr
Hallo

Vielen Dank für das vb Beispiel. Werde ich mir demnächst genauer anschauen.

Ich benötige den Namen der OU, weil die Freigaben der einzelnen OU´s genau so heißen.
Daher möchte ich mit einem einzigen Script jeden User das zugehörige Laufwerk seiner OU (Abteilung) mappen.

Gruß

Hannes
Bitte warten ..
Mitglied: datasearch
23.04.2007 um 10:18 Uhr
Hallo Biber,

es funktioniert einfach nur. Ich sollte mich doch mal intensiv mit VB befassen.

Warum ich das brauche? Lange Geschichte, kurz gesagt, es geht um automatisierte Dokumentation der AD-Strukturen in mehreren Gesammtstrukturen.

Hast du vieleicht eine Buchempfehlung für VB Scripting? Sollte schon Deutsch sein. Der scriptingGuide der bei den PSPress Büchern dabei ist finde ich nicht unbedingt so ausführlich.
Bitte warten ..
Mitglied: Biber
23.04.2007 um 11:12 Uhr
Moin datasearch,

bei Deiner Frage nach Literaturempfehlungen zu VBScripting muss ich auch passen - da könnte eventuell Kollege bastla besser weiterhelfen.

Ich habe gerade mal nachgeschaut, ob bei uns im Forum eventuell Buchtipps unter "Links" gepostet sind, bin aber nicht wirklich fündig geworden.

Als Einstiegspunkt für weitere Recherchen wäre evtl noch M$ Skript Center oder die M$-Scripting Guy-Seiten geeignet.

Falls Dir Besseres empfohlen wird, dann könntest Du bitte einen entsprechenden Link ins Forum einstellen.

Gruss
Biber
Bitte warten ..
Mitglied: bastla
23.04.2007 um 14:35 Uhr
Hallo datasearch!

Mit einer Buchempfehlung kann ich leider nicht dienen, aber viel gebracht haben auch mir die von Biber genannten Codebeispiele bei MS selbst, ausgehend vom oben verlinkten Script Center die erwähnten Hey, Scripting Guy!-Kolumnen und natürlich das Script Center Script Repository (als Offline-Versionen: The Hey, Scripting Guy! Archive und TechNet Script Center Sample Scripts)

ergänzt durch WMI Tasks for Scripts and Applications sowie ADSI Scripting Primer (dazu als Downloads: WMI Code Creator v1.0 und ADSI Scriptomatic)

und viele weitere Code-Beispiele quer durch's Web:
Rob van der Woude's VBScript Scripting Techniques
JSWare VBScript Samples and Components
faq-o-matic.net

Die Bücher von Holger Schwichtenberg kenne ich nicht aus eigener Anschauung, aber seine Informationen zu Windows Scripting könntest Du vielleicht interessant finden.

Noch mehr Deutschsprachiges findest Du bei Frank's Exchange FAQ (verlinkt).

So, damit dürftest Du für die nächsten paar Stunden beschäftigt sein ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(3)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Userverwaltung
Policy für einen bestimmten User abfragen (2)

Frage von paupau90 zum Thema Windows Userverwaltung ...

Windows 7
Computer OU auslesen bzw. abfragen (2)

Frage von mexx991 zum Thema Windows 7 ...

Windows Userverwaltung
gelöst Programmupdates ohne Adminrechte für die User einer Domäne (3)

Frage von M.Marz zum Thema Windows Userverwaltung ...

Microsoft Office
gelöst Sharepoint Cached User Infos ? (4)

Frage von joehuaba zum Thema Microsoft Office ...

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