OU des User Abfragen
ü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]
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]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 56757
Url: https://administrator.de/contentid/56757
Ausgedruckt am: 16.11.2024 um 21:11 Uhr
12 Kommentare
Neuester Kommentar
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.
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.
Hi!
Klar hab ich ein Beispiel... Sorry. Hätte ich auch schon längst posten können
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:
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
Klar hab ich ein Beispiel... Sorry. Hätte ich auch schon längst posten können
%logonserver%\netlogon\tools\ifmember "Geschaeftsleitungsteam"
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:
@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
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:
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:
[ungetestete Skizzen!]
Gruss
Biber
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:
'----Snipp ListGroups.vbs [gedacht in einem Login/Mapping-Skript]
Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")
strUserPath = "LDAP://" & objSysInfo.UserName
Set objUser = GetObject(strUserPath)
For Each strGroup in objUser.MemberOf
strGroupPath = "LDAP://" & strGroup
Set objGroup = GetObject(strGroupPath)
strGroupName = objGroup.CN
wscript.echo strGroupName
' Select Case strGroupName
' Case "Elektrik"
' objNetwork.MapNetworkDrive "U:" , "\\w03team3\Elektrik"
'
' eventuell Home-Laufwerk ?
' objNetwork.MapNetworkDrive "H:", "\\w03team\Users\" & objUser.sAMAccountName
'
' Case "Beschwerdeabteilung"
' objNetwork.MapNetworkDrive "X:", "\\server666\Garbage
' ........
' End Select
Next
Und das könntest Du dann wiederum im Batch mit einer FOR/F-Anweisung abfackeln.
Aufruf im Batch:
cscript //nologo DerSchipselOben.vbs
-bzw-
For /f %%i in ('cscript //nologo DerSchipselOben.vbs') do (
if /i [%%i] == [Elektrik] net use U: \\w03team3\Elektrik /p:n
if /i [%%i] == [Kantine] net use U: \\wuergteam\Reste /p:n
....
)
[ungetestete Skizzen!]
Gruss
Biber
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:
...aufzurufen wieder mit
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
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:
'-----ListAllOUs.vbs
Dim cn, rs, root, domain, strdomain, strtest
Set cn = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
Set root = GetObject("LDAP://rootDSE")
strdomain = root.Get("defaultNamingContext")
Set domain = GetObject("LDAP://" & strdomain)
cn.ConnectionString = "Data Source=Active Directory Provider;Provider=ADsDSOObject"
cn.Open
rs.ActiveConnection = cn
rs.Source = "<" & domain.ADsPath & ">;(&(objectCategory=OrganizationalUnit));distinguishedName"
' Anmerkung --- vielleicht reicht Dir statt "distinguishedname" auch einfach "name". Ausprobieren.
rs.Open
Do While Not rs.EOF
wscript.echo rs.Fields(0)
rs.MoveNext
Loop
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
cscript //nologo [Lw:\Pfad\]ListOUs.vbs
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
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.
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.
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
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
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
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