Caso você prefira fazer o script por VBS (para não ter que assinar digitalmente para poder usar em GPO, por expmplo), leia nosso posto de Script PowerShell para mapear objetos do AD
Esse script fará o seguinte:
- Vai consultar em qual OU o usuário está;
- Dessa OU, de onde o usuário está, até o nível mais básico definido no código (em cinza), irá listar todos os objetos dessa OU, e:
- Para cada objeto de Pasta Compartilhada encontrado irá mapear, usando o nome da pasta como letra e o caminho de rede definido.
- Para cada objeto de Impressora de rede encontrado irá mapear, usando o caminho da impressora definido.
ON ERROR RESUME NEXT Dim i, objContainer, objPrinter, objVol, sys, VolName, WshNetwork, objFSO, objShell Set objFSO = CreateObject(“Scripting.FileSystemObject”) Set WshNetwork = WScript.CreateObject(“WScript.Network”) Set objShell = CreateObject(“Shell.Application”) Set sys = CreateObject(“ADSystemInfo”) arr = split(sys.UserName,”,”) OU = Replace(sys.UserName, arr(0)&”,”, “”) OU = LCase(OU) ConnectPublishedFolders OU ConnectPublishedPrinters OU Sub ConnectContainer(strContainer) Set objContainer = GetObject(“LDAP://” & strContainer ) End Sub Sub ConnectPublishedFolders(OURecursos) arr = Split(OURecursos, “,”) For i = 0 to ubound(arr) If Left(OURecursos, 3) <> “dc=” then Set objContainer = GetObject(“LDAP://” & OURecursos ) objContainer.Filter = Array(“volume”) For Each objVol In objContainer VolName = objVol.name VolName = Replace(VolName, “CN=”,””) VolName = Replace(VolName, “:”,””) VolName = VolName &”:” If (objFSO.DriveExists(VolName) = True) Then WshNetwork.RemoveNetworkDrive VolName, True, True End If Next For Each objVol In objContainer VolName = objVol.name VolName = Replace(VolName, “CN=”,””) VolName = Replace(VolName, “:”,””) VolName = VolName &”:” WshNetwork.MapNetworkDrive VolName, objVol.UNCName, True If NOT (IsEmpty(objVol.Description) or IsNull(objVol.Description)) Then objShell.NameSpace(VolName).Self.Name = objVol.Description End If Next End if Next End Sub Sub ConnectPublishedPrinters(OURecursos) arr = Split(OURecursos, “,”) For i = 0 to ubound(arr) If Left(OURecursos, 3) <> “dc=” then Set objContainer = GetObject(“LDAP://” & OURecursos ) objContainer.Filter = Array(“printQueue”) For Each objPrinter In objContainer WshNetwork.AddWindowsPrinterConnection objPrinter.uNCName Next End if Next End Sub |
Fontes/Referências
NVLAN – Script PowerShell para mapear objetos do AD
https://www.computerperformance.co.uk/logon/mapnetworkdrive-rename
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Entre em contato conosco pelo e-mail equipe@nvlan.com.br.