Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Windows 2003] Netwerkdrive Mappen op Afdeling

Pagina: 1
Acties:

  • flashback1989
  • Registratie: Augustus 2005
  • Laatst online: 28-11 10:40
onderstaand script heb ik aangepast voor gebruik
maar alleen marketing wordt toegevoegd
en daarna krijg ik het bericht "Finished mapping Groups - check drives'
ik test het vbs script op windows 7 werkt elseif daar niet op

VBScript: mappingnetwork
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Option Explicit
Dim objNetwork, objUser, CurrentUser
Dim strGroup

' Initialise Groups with Const
Const Marketing_Groep = "cn=MarketingGRP"
Const IT_Groep = "cn=IT"
Const Management_Groep = "cn=ManagementGRP"

' Create objects and extract strGroup values
Set objNetwork = CreateObject("WScript.Network")
Set objUser = CreateObject("ADSystemInfo")
Set CurrentUser = GetObject("LDAP://" & objUser.UserName)
strGroup = LCase(Join(CurrentUser.MemberOf))

' If logic testing strGroup for the values in Const groups
If InStr(strGroup, lcase(Marketing_Groep)) Then
WScript.Echo "Marketing"
objNetwork.MapNetworkDrive "m:", "\\server\Marketing" _


' For a production script remove the WScript
' Activate mapnetworkdrive by removing the apostrophes (' Rem)
ElseIf InStr(strGroup, lcase(IT_Groep)) Then
WScript.Echo "IT"
objNetwork.MapNetworkDrive "l:", "\\server\IT"_

ElseIf InStr(strGroup, lcase(Management_Groep)) Then
WScript.Echo "Online: " & strGroup
objNetwork.MapNetworkDrive "t:", "\\server\Management" _


End If
Wscript.Echo "Finished mapping Groups - check drives "
WScript.Quit

  • flashback1989
  • Registratie: Augustus 2005
  • Laatst online: 28-11 10:40
ok slecht van mij
heb het al gevonden
als iemand niet lid is van de groep gaat hij pas naar de volgende
topic mag dicht

[ Voor 7% gewijzigd door flashback1989 op 10-09-2012 11:44 ]


Verwijderd

waarom doe je dit zo ? in 2008 kan dit gewoon met een policy

  • flashback1989
  • Registratie: Augustus 2005
  • Laatst online: 28-11 10:40
we draaien nog met een windows 2003 DC
maar moet dus een ander script vinden / deze aanpassen omdat sommige mensen meerdere schijven nodig zijn
en deze er maar een toevoegt

  • CMD-Snake
  • Registratie: Oktober 2011
  • Laatst online: 13-11-2022
Verwijderd schreef op maandag 10 september 2012 @ 11:45:
waarom doe je dit zo ? in 2008 kan dit gewoon met een policy
Ik zou kiezen voor group policy over scripts. Minder kans op fouten of problemen.

  • flashback1989
  • Registratie: Augustus 2005
  • Laatst online: 28-11 10:40
jammergenoeg geen R2 machine dus geen afdrukbeheer en een alternatief ( kixtart) lijkt niet goed te werken met UAC

  • Semt-x
  • Registratie: September 2002
  • Laatst online: 29-11 14:41
Je kan het ook zelf ombouwen!

De sleutel regel in je huidige script is
code:
1
strGroup = LCase(Join(CurrentUser.MemberOf))

waarin je een array van elementen (elke groepnaam is een element) tot 1 lange string maakt met join.

als je een loop maakt waarin elke groep in het array analyseert ipv de hele handel samen voegt, kun je meerdere mappings maken;
code:
1
2
3
4
5
6
7
8
If IsArray(objUser.MemberOf) Then
    For Each strGroup In objUser.MemberOf
        Set objGroup = GetObject("LDAP://" & strGroup)
        If LCase(objGroup.CN)=LCase("groepnaam1") Then fnMapDrive "K:", "\\server\share\dir\subdir" 
        If LCase(objGroup.CN)=LCase("groepnaam2") Then fnMapDrive "L:", "\\server\share\dir\subdir"
        If LCase(objGroup.CN)=LCase("groepnaam3") Then fnMapDrive "M:", "\\server\share\dir\subdir"
    Next
End If


fnMapDrive is een functie die op een serie voorwaardes een drivemapping maakt. Je kan daar ook "objNetwork.MapNetworkDrive" gebruiken maar dat gaat niet altijd goed. Daarom heb ik een functie gemaakt die eerst een aantal dingen test voordat de drivemapping wordt gemaakt. je kan denken aan, is deze driveletter al in gebruik.

Overigens het object dat jij objUser noemt (ADSystemInfo) nogal verwarrend. Het bevat veel meer gegevens dan alleen user gegevens. objADSysInfo is veel duidelijker. dan kun je het object uit objSysInfo.UserName objUser noemen. veel logischer. Dan is het voor anderen die deze code gaan lezen in de toekomst duidelijker.

Tot slot zou ik geen constanten maken van groepsnamen. In mijn voorbeeld hierboven worden de displaynames van AD groepen gebruikt ipv de delen van distiguished namen (cn=groepnaam) die jij gebruikt. Ik maak er altijd lowercase van, omdat een AD groep verschillende namen heeft die kunnen verschillen. Ik heb ooit meegemaakt dat er case verschillen in zaten, zodoende alles naar lowercase.
De groepsnaam spreekt voorzich, en een extra contante vind ik niet echt nodig, maakt je script alleen maar langer!

h2h,
Sem

  • Rupie
  • Registratie: Augustus 2006
  • Laatst online: 13-11 11:58
flashback1989 schreef op maandag 10 september 2012 @ 11:44:
ok slecht van mij
heb het al gevonden
als iemand niet lid is van de groep gaat hij pas naar de volgende
topic mag dicht
Prima dat je het zelf gevonden hebt nu, maar volgende keer mag je wel even wat beter geven wat je zelf zoal geprobeerd hebt ;)

Desktop | Server | Laptop


  • degroot
  • Registratie: December 2003
  • Niet online
Gewoon met RSAT op je W7 machine de policies maken.

http://www.microsoft.com/en-us/download/details.aspx?id=7887

www.degroot-it.nl

Pagina: 1