bjoernmadh
Goto Top

Suche einen Scripter für eine Druckerzuweisung per Logonscript

Hallo.

Ich möchte ganz gerne unsere bisherige Druckerzuweisung über KIX vereinfachen.

Im Moment ist es so, das jeder Drucker im Kix als eigene Abfrage gepflegt ist.

Ein Auszug:
if ingroup ("p-gtbvw010") = 1
addprinterconnection ("\\vbaprintbi1\p-gtbvw010")
endif
if ingroup ("p-gtbvw010_farbe") = 1
addprinterconnection ("\\vbaprintbi1\p-gtbvw010_farbe")
endif
if ingroup ("p-zimmerei010") = 1
addprinterconnection ("\\vba3printbi01\p-zimmerei010")
endif
if ingroup ("p-zimmerei021") = 1
addprinterconnection ("\\print3\p-zimmerei021")
endif

Ich will das nun vereichfachen, habe aber keine Ahnung wie.

Es ist so, das der User Mitglied in einer Gruppe ist, die wie die Druckerfreigabe heißt. (z.B. testuser ist Mitglied in AD Gruppe p-gtbvw010 und p-zimmerei021)
Es gibt momentan 3 Printserver. Ein W2K und 2 W2K3.

Das Script is sehr lang, so dass es hinter dünnen Leitungen ewig dauert. Außerdem kann man schlecht kontrollieren, ob es zu einem Fehler gekommen ist.
Und ich muss immer darauf achten, auch den richtigen Server anzugeben.

Weiß jemand Rat?
Ist KIX hier noch zweckmäßig?

MfG

Björn

Content-ID: 140477

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

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

BigWim
BigWim 30.09.2010 um 15:29:22 Uhr
Goto Top
Hallo Björn,

war auf der Suche, ob ich nicht noch etwas sinnvolles beisteuern kann. Da Deine Frage noch unbeantwortet ist, kann ich es ja nicht schlimmer machen face-wink


Ob KIX noch zwecksmäßig ist, kann ich Dir auch nicht beantworten, aber warum umstellen, wenn es noch funktioniert?

Als Vorschlag könnte ich Dir folgendes anbieten - wir nutzen es zwar etwas anders, aber gut:

Ich habe zwei Funktionen, die erst einmal alle Gruppen als ein Array zurückgibt. Das Array wird bei mir im Init.kix ausgeführt und während des Logins vorgehalten. Wird halt öfter benötigt. Der Ermitteln über dsquery ist genauer - löst "Gruppe in Gruppe" auf. Ansonsten konnte ich keinen Unterschied feststellen.

Deine Druckergruppe fängt ja immer mit einem "P-", also mit einem for each das Array durchsuchen und beim Treffer entsprechend mappen.

Markus

ungetestet:

$AlleGruppen = GetGlobaleGruppen()
for each $Gruppe in $AlleGruppen
  if Left($Gruppe, 2) = "p-"  
    $rc = addprinterconnection ("\\print3\$Gruppe")  
  endif
next


Aus meinem login.kix:

Function GetGlobaleGruppen()
	$tmpFile	= '%temp%\dsget_@userid.txt'  
	$tmpADCmd	= 'dsquery user -name @userid | dsget user -memberof -expand'  

	shell "cmd.exe /c $tmpADCmd >$tmpFile"  
	$tmpGG = "   * Filter <$FilterGlobalGroup>"  
	$tmpFileHandle = FreeFileHandle()
	IF Open($tmpFileHandle, $tmpFile) = 0
  		$x = ReadLine($tmpFileHandle)
  		WHILE @ERROR = 0
			if instr($x, $FilterGlobalGroup) > 0
				$tmpGG = '$tmpGG;' + Substr($x, 5, (instr($x, ',')-5))  
			endif
  			$x = ReadLine($tmpFileHandle)
  		LOOP
	ENDIF
	$rc = Close($tmpFileHandle)

	$GetGlobaleGruppen = Split(SubStr($tmpGG, 2), ";")  

EndFunction

Function GetGlobaleGruppen_perKIXermitteln()
    $Index = 0
    $AllGroup = ""  
    $LenDomain = Len(@LDomain)+2
    $LenGroupFilter = Len($FilterGlobalGroup)

    DO
        $Group = ENUMGROUP($Index)
        if Substr($Group, $LenDomain, $LenGroupFilter) = $FilterGlobalGroup
       		$AllGroup = "$AllGroup;"+Substr($Group,$LenDomain)  
	    endif
        $Index=$Index+1
    UNTIL Len($Group) = 0
	$GetGlobaleGruppen_perKIXermitteln = Split(Substr($AllGroup, 2),";")  

EndFunction