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-Key: 177205

Url: https://administrator.de/contentid/177205

Printed on: April 24, 2024 at 03:04 o'clock

Member: bastla
bastla Dec 03, 2011 at 17:27:47 (UTC)
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
Member: gemini
gemini Dec 04, 2011 at 10:25:07 (UTC)
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
Member: TunderEfx
TunderEfx Dec 05, 2011 at 10:06:02 (UTC)
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 ???
Member: TunderEfx
TunderEfx Dec 05, 2011 at 10:07:18 (UTC)
Goto Top
danke gemini,

ich werde es mal paralel dazu mal probieren.

mfg
stefan
Member: bastla
bastla Dec 05, 2011 at 11:56:42 (UTC)
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
Member: TunderEfx
TunderEfx Dec 06, 2011 at 10:52:10 (UTC)
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