Il bello di ActiveDirectory è la possibilità di fornire agli utenti appertenenti ad un gruppo uno spazio di collaborazione e di scambio file. Generalmente le autorizzazioni all'accesso in queste aree dipendono dal gruppo di protezione di cui l'utente è membro. In situazioni aziendali dove spesso si cambia di incarico è utile un programma che faccia il puntamento alle risorse condivise in modo automatico, così che, qualora un utente venga spostato da un gruppo all'altro, l'amministratore non deve eliminare la condivisione per ricrearne una nuova.


Vedimo come fare:

'=============================================================
'  Collegamento dischi di rete
'  di Massimiliano PASQUALONI
'  vers 2.0.1 del 11/10/04
'  Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

'=============================================================


'DICHIARO LE SHARE DEGLI APPLICATIVI
App_SHARE_1 = "Share_1"
App_SHARE_2 = "Share_2"
.....
App_SHARE_N = "Share_N"

'DICHIARO I SERVER SU CUI FARE IL PUNTAMENTO
Const USER_SERVER = "USR_SERVER"
Const GROUP_SERVER = "GROUP_SERVER"
App_SERVER _1 = "APP_SERVER_1"
App_SERVER _2 = "APP_SERVER_2"
...
App_SERVER _N = "APP_SERVER_N"

on error resume next

'DICHIARO LE LABEL PER I DISCHI DI RETE
'il disco USER_PATH andrà a puntare la directory utente condivisa
'il disco GROUP_PATH andrà a puntare la directory del gruppo di appartenenza condivisa
App_PATH_1 = "X:"
App_PATH_2 = "Y:"
.....
App_PATH_N = "Z:"

'istanzio gli oggetti
Set WshNetwork = WScript.CreateObject("WScript.Network")

'LIBERO LE LABEL
'Enumero i mapping
Set oDrives = WshNetwork.EnumNetworkDrives
'per ogni mapping attivo
For i = 0 to oDrives.Count - 1 Step 2
 'controllo che non siano già usate le label necessarie
 if oDrives.Item(i) = USER_PATH or  oDrives.Item(i) = App_PATH_1 or  oDrives.Item(i) = App_PATH_2 ... or  oDrives.Item(i) = App_PATH_N then
  'in tal caso rimuovo il mapping per liberare la label
  
  WshNetwork.RemoveNetworkDrive oDrives.Item(i)
 end if
Next



'MAPPO IL DISCO DELL'UTENTE
'ricavo il nome dell'utente
UserName = wshNetwork.UserName 'leggo la proprietà UserName dell'oggetto Windows Script Host
'costruisco la stringa di connessione
USER_DRIVE  = "\\" & USER_SERVER  & "\" & UserName
'mappo il disco
wshNetwork.MapNetworkDrive USER_PATH  , USER_DRIVE




'MAPPO I DISCHI APPLICATIVI
'costruisco le stringhe di connessione
App_DRIVE_1 =  "\\" & App_SERVER_1 & "\" & App_SHARE_1
App_DRIVE_2 =  "\\" & App_SERVER_2 & "\" & App_SHARE_2
.....
App_DRIVE_N =  "\\" & App_SERVER_N & "\" & App_SHARE_N

'mappo le disco
wshNetwork.MapNetworkDrive App_PATH_1  , App_DRIVE_1
wshNetwork.MapNetworkDrive App_PATH_2 , App_DRIVE_2
....
wshNetwork.MapNetworkDrive App_PATH_N  , App_DRIVE_N


'MAPPO I DISCHI DI GRUPPO DELL'UTENTE
'creo la connessione
Set ADSysInfo = CreateObject("ADSystemInfo")
'ricavo il nome dell'utente
Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)
'ricavo i gruppi
aMemberOf = CurrentUser.MemberOf
'i gruppi vengono restituite in un rs composto da più elementi, con le rige successive pulisco i gruppi....
if isarray(aMemberOf) then

for each gruppi in aMemberOf
 aGroups = split(gruppi , ",")
 for each gruppo in aGroups
  if left(gruppo, 3) = "CN=" then
   if gruppo <> "CN=Users" then
    '...fino ad ottenere il nome pulito del gruppo di appartenenza.
    gruppo = right(gruppo,len(gruppo) - 3)
    'RECUPERO LE INFO SUI DISCHI GIà MAPPATI
    'Creo un nuovo oggetto di rete
    Set NewNetwork = WScript.CreateObject("WScript.Network")
    Set oDrives = NewNetwork.EnumNetworkDrives
    'per ogni elemento nella lista delle unità di rete..
    For i = 0 to oDrives.Count -1 Step 2
     'controllo che esista il mapping
     if oDrives(i) <> "" then
      'metto in memoria la label
      alredy_label = alredy_label &  oDrives(i) & ", "
      'metto in memoria il path
      Mappati= Mappati &  oDrives(i + 1) & ", "
     end if
    next
    'se il gruppo non è nella path dei dischi mappati
    if InStr(Mappati, gruppo) = 0 then
     'genero label
     GROUP_PATH = ""
     'il contatore parte da 90 che in ascii corrisponde alla Z
     i = 90
     'ripeto finchè non torvi una label non utilizzata o finchè non arrivi alla lettera E
     do while InStr(alredy_label, GROUP_PATH) <> 0 or i < 68
      'converto in carattere il contatore
      label = chr(i)
      'costruisco la label
      GROUP_PATH = label  & ":"
      'decremento il contatore
      i = i - 1
     loop
     
     'genero la stringa del path
     GROUP_DRIVE  = "\\" & GROUP_SERVER & "\" & gruppo
     'mappo gruppo
     
     wshNetwork.MapNetworkDrive GROUP_PATH  , GROUP_DRIVE

     'msgbox  GROUP_DRIVE 
    end if
   end if
  end if
 next
next
else
aGroups = split(aMemberOf, ",")
 for each gruppo in aGroups
  if left(gruppo, 3) = "CN=" then
   if gruppo <> "CN=Users" then
    '...fino ad ottenere il nome pulito del gruppo di appartenenza.
    gruppo = right(gruppo,len(gruppo) - 3)
    'RECUPERO LE INFO SUI DISCHI GIà MAPPATI
    'Creo un nuovo oggetto di rete
    Set NewNetwork = WScript.CreateObject("WScript.Network")
    Set oDrives = NewNetwork.EnumNetworkDrives
    'per ogni elemento nella lista delle unità di rete..
    For i = 0 to oDrives.Count -1 Step 2
 
     'controllo che esista il mapping
     if oDrives(i) <> "" then
      'metto in memoria la label
      alredy_label = alredy_label &  oDrives(i) & ", "
      'metto in memoria il path
      Mappati= Mappati &  oDrives(i + 1) & ", "
     end if
    next

    'se il gruppo non è nella path dei dischi mappati
    if InStr(Mappati, gruppo) = 0 then
    
     'genero label
     GROUP_PATH = ""
     'il contatore parte da 90 che in ascii corrisponde alla Z
     i = 90
     'ripeto finchè non torvi una label non utilizzata o finchè non arrivi alla lettera E
     do while InStr(alredy_label, GROUP_PATH) <> 0 or i < 68
     
      'converto in carattere il contatore
      label = chr(i)
      'costruisco la label
      GROUP_PATH = label  & ":"
      'decremento il contatore
      i = i - 1
      
     loop
     
     'genero la stringa del path
     GROUP_DRIVE  = "\\" & GROUP_SERVER & "\" & gruppo
     'mappo gruppo
           
     wshNetwork.MapNetworkDrive GROUP_PATH  , GROUP_DRIVE
      
    end if
   end if
  end if
 next
end if

We use cookies
Attenzione! Questo sito utilizza i cookie tecnici e di terze parti per poter fornire i servizi.