tunderefx
Goto Top

Username auslesen

Hallo Zusammen,

ich kenn mich leider mit Scripten nicht aus aber es kann mir sicherlich jemand helfen da ich im Forum nichts passendes gefunden habe.

Hallo Zusammen,

ich such nur eine ganz einfache Loesung um den Usernamen aufzuloesen.
Dies ist nur ein Teil eines Scripts das den Useramen mit einer Gruppe vergleicht und daraufhin ein Laufwerk verbindet.

dsget group gibt mir nur den ganzen namen zurueck -> Max Mustermann
die pararmeter -samid geht leider nicht und ich bekomme eine Fehlermedung

Die Frage ist eigendlich ganz einfach aber ich bin kurz davor irre zu werden (und das am Wochenende) face-smile
Wie bekomme ich aus %usernamen% z.B. MMustermann nur Mustermann

mfg
Stefan

Content-ID: 177205

Url: https://administrator.de/forum/username-auslesen-177205.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

bastla
bastla 03.12.2011 um 18:27:47 Uhr
Goto Top
Hallo TunderEfx!

Kannst Du vielleicht etwas genauer erklären, in welchem Kontext das Script läuft (am Client als Anmeldescript?) und woher "MMustermann" stammt bzw ob es genügt, das erste Zeichen des Namens zu eliminieren?

BTW: Welche Scriptsprache verwendest Du? face-wink
Noch als Hinweis zu
die pararmeter -samid geht leider nicht
Versuch es etwa so:
dsget group "cn=..." -members|dsget user -samid
bzw
for /f "skip=1" %%i in ('dsget group "cn=..." -members^|dsget user -samid^|findstr /v /c:"dsget war erfolgreich"') do echo %%i
Grüße
bastla
gemini
gemini 04.12.2011 um 11:25:07 Uhr
Goto Top
Hallo TunderEfx,

hier ein Ansatz mit VBScript.
Ist ein Auszug aus einem Anmeldescript das genau das gemacht hat was du möchtest, nämlich Laufwerke und Drucker gruppenspezifisch zu verbinden.

Set objADSysInfo = CreateObject("ADSystemInfo")  
Set objUser = GetObject("LDAP://" & objADSysInfo.UserName) ' Rückgabe DN  

' Alle Gruppen in denen der User Mitglied ist werden in eine Variable geschrieben  
' Trennzeichen: ?  
colGroups = objUser.GetEx("memberOf")  
For Each strGroup in colGroups
	strGroups = strGroups & LCase(strGroup) & "?"  
Next

If InStr(strGroups, LCase(<Gruppenname>)) Then <Mach was>

Zum gruppenspezifischen Mapping gibt es elegantere Möglichkeiten die auch sehr gut funktionieren, bspw. Policy Preferencies.

Gruß,
gemini
TunderEfx
TunderEfx 05.12.2011 um 11:06:02 Uhr
Goto Top
Hallo Bastla,

im grunde geich wie du es gemacht hast aber ich sehen das problem bei -members

was macht das ^ bei -members^ eigendlich genau ???
TunderEfx
TunderEfx 05.12.2011 um 11:07:18 Uhr
Goto Top
danke gemini,

ich werde es mal paralel dazu mal probieren.

mfg
stefan
bastla
bastla 05.12.2011 um 12:56:42 Uhr
Goto Top
Hallo TunderEfx!
was macht das ^ bei -members^ eigendlich genau ???
Das macht nix bei "members", sondern sorgt für eine "Maskierung" des "|" (ist innerhalb einer "for"-Schleife erforderlich).
Du hast übrigens noch nicht beschrieben, was Du eigentlich vor hast ...

Grüße
bastla
TunderEfx
TunderEfx 06.12.2011 um 11:52:10 Uhr
Goto Top
Hallo Bastla,

ich möchte aus mehreren Logon Scripten zu Laufwerken (5 St.) eines machen.
Durch das Auslesen des Usernamens aus mehreren Gruppen möchte ich z. B mit net use ....... das entsprechende Laufwerk dem User zur verfügung stellen

Ich nimm mal das von oben:
for /f "skip=1" %%i in ('dsget group "cn=..." -members^|dsget user -samid"') do (
IF %%i==%username%|net use z: \\.......................
)

die Frage ist noch ober er IF und net use an der stelle verwenden kann ?

Sorry bin gerade unterwegs und konnte es noch nicht ausprobieren.

mfg
Stefan