#38086 - 2003-03-20 10:59 AM
HOW CAN I REMOVE/PREVENT DOUBLE DRIVEMAPPINGS?
|
Kris
Fresh Scripter
Registered: 2003-03-20
Posts: 13
Loc: Belgium
|
Below is the scripts I made. For drivemappings, I get the servername out of the user's local groups and the sharename out of the user's global groups. PROBLEM: Some users are in several matching local and global groups so they will get the same drivemapping twice. How can I prevent this or delete an identical drivemapping on another driveletter?
Break on ; Make this script interruptable using close or ctrl-C Debug OFF ; cls
; Standard reserved driveletters $WerkLetter = "GJKL-" $ApplLetter = "QRP-" $ProjLetter = "STUV-"
; Get all Local and Global Groups $arLocal = GetUserLocalGroups() $arGlobal = GetUserGlobalGroups()
; Set LogonDomain $strDomain = @LDOMAIN
; walk all Local Groups For Each $strLocalGroup in $arLocal
;? $strLocalGroup ; Get all Global Groups in this LocalGroup $arGlobalInLocal = GetGlobalInLocal($strLocalGroup, $strDomain)
; Walk all Global Groups in this LocalGroup For Each $strGlobalInLocal in $arGlobalInLocal
; ? $strGlobalInLocal
For Each $strglobal in $arGlobal ; ? $strglobal If $strglobal = $strGlobalInLocal $line = "\\" + $strLocalGroup + "\" + $strglobal ? $line EndIf
; Build share name ; MakeMapping($strLocalGroup, $strGlobalLocalGroup) ; Endif Next Next Next
Function GetUserLocalGroups()
$LTeller = 0 Do $LGroup = EnumLocalGroup($LTeller) $LTeller=$LTeller+1 $GetUserLocalGroups = $GetUserLocalGroups + ";" +$LGroup Until Len($LGroup) = 0 $GetUserLocalGroups = Split($GetUserLocalGroups, ";")
EndFunction
Function GetUserGlobalGroups()
$GTeller = 0 Do $GGroup = EnumGroup($GTeller) $GTeller=$GTeller+1 $GetUserGlobalGroups = $GetUserGlobalGroups + ";" +$GGroup Until Len($GGroup) = 0 $GetUserGlobalGroups = Split($GetUserGlobalGroups, ";")
EndFunction
Function GetGlobalInLocal($strLocalGroup, $strDomain)
Dim $i,$error,$line Dim $array[255] Dim $ReDim $ReDim = Ubound($array) Dim $tempfile $tempfile = "%temp%\pipe.tmp"
If Exist("$tempfile") Del("$tempfile") EndIf Shell '%comspec% /c local "$strLocalGroup" "$strDomain" > "$tempfile" 2>nul' $error = @error If Open (10, "$tempfile") = 0 $i = 0 $line = ReadLine(10) While NOT @error If $line $array[$i] = $line If $i = $ReDim $ReDim = $ReDim*2 ReDim preserve $array[$ReDim] EndIf $i = $i + 1 EndIf $line = ReadLine(10) Loop $=Close(10) Del "$tempfile" If $i > 0 ReDim preserve $array[$i-1] $GetGlobalInLocal=$array Else $GetGlobalInLocal = 0 EndIf Exit $error Else $GetGlobalInLocal = 0 Exit @error EndIf
EndFunction
;Parse servername from LocalGroup name Function GetServerFromLocalGroup($strLocalGroup)
$GetServerFromLocalGroup = SubStr($strLocalGroup, 3, Len($strLocalGroup) - 2)
EndFunction
;Parse ShareName from GlobalGroup name Function GetShareNameFromGlobalGroup($strGlobalGroup)
$GetShareNameFromGlobalGroup = SubStr($strGlobalGroup, InStr($strGlobalGroup, "_") + 1)
EndFunction
Function CheckStringINArray($arGlobal, $strGlobalLocalGroup)
$CheckStringINArray = 0 For Each $strToCheck IN $arGlobal
?$strToCheck ?$strGlobalGroup If ($strToCheck == $strGlobalGroup) $CheckStringINArray = 1 EndIf Next
EndFunction
Function MakeMapping($strLocalGroup, $strGlobalGroup)
? "Share: \\" + GetServerFromLocalGroup($strLocalGroup) + "\" + GetShareNameFromGlobalGroup($strGlobalGroup)
EndFunction
|
|
Top
|
|
|
|
Moderator: Jochen, Allen, Radimus, Glenn Barnas, ShaneEP, Ruud van Velsen, Arend_, Mart
|
0 registered
and 657 anonymous users online.
|
|
|