Скрипт для подключения сетевых дисков

0
6

В корпоративной сети всегда поднимается вопрос: «Как различным пользователям и группам работать только с определенными документами» Решение простое — использовать общие сетевые диски. Но, надо подключать разным группам — разные диски! В этом нам поможет простенький VBScript, который мы добавляем в GPO (групповые политики) в раздел logon.

Option Explicit
‘On Error Resume Next

Dim WshShell, WshNetwork
Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj
‘ Задаем имя файлового сервера, при использовании нескольких серверов
‘ создаем несколько констант и используем их при вызове MapDrv
Const FileSrv0 = «\\FPS1»
Const FileSrv1 = «\\FPS2»
Const FileSrv2 = «\\FPS4»
Const FileSrv3 = «\\APP1»
UserGroups=«»
Set WshShell = WScript.CreateObject(«WScript.Shell»)
Set WshNetwork = WScript.CreateObject(«WScript.Network»)
Set objSysInfo = CreateObject(«ADSystemInfo»)
strUserDN = objSysInfo.userName
Set UserObj = GetObject(«LDAP://» & strUserDN)
For Each GroupObj In UserObj.Groups
UserGroups=UserGroups & «[« & GroupObj.Name & «]»
Next
‘MsgBox «Member of «& UserGroups
‘==============================
‘===========Company============
‘==============================
if InGroup(«TEAM-gs») then
MapDrv «P:», FileSrv0 & «\DATA»,«DATA»
MapDrv «O:», FileSrv0 & «\DATA\Obmen»,«Obmen»
end if
if InGroup(«buying-gs») then
MapDrv «P:», FileSrv0 & «\DATA»,«DATA»
MapDrv «Q:», FileSrv0 & «\DATA\buying»,«Buying»
MapDrv «O:», FileSrv0 & «\DATA\Obmen»,«Obmen»
end if
if InGroup(«Everyone-gs») then
MapDrv «U:», FileSrv2 & «\USERS\» & WshNetwork.UserName, WshNetwork.UserName & «‘s personal disk»
MapDrv «H:», FileSrv0 & «\DATA», «DATA»
MapDrv «M:», FileSrv3 & «\App\Comp_App», «APP_DATA»
end if
MapDrv «V:», FileSrv1 & «\Corporate», «Corporate»
‘==========================================================================

‘ Function MapDrv(DrvLet, UNCPath, DrvName)

‘ DrvLet — Буква устройства
‘ UNCPath — Сетевой путь
‘ DrvName — Название диска отображаемое в проводнике Windows

‘ COMMENT: Подключение сетевых дисков с записью ошибок в EventLog

‘==========================================================================

Function MapDrv(DrvLet, UNCPath, DrvName)
Dim objFSO, oShell ‘ Object variable
Dim Msg
Set objFSO = CreateObject(«Scripting.FileSystemObject»)
Set oShell = CreateObject(«Shell.Application»)
On Error Resume Next
If objFSO.DriveExists(DrvLet) Then
WshNetwork.RemoveNetworkDrive DrvLet, true, true
End If
WshNetwork.MapNetworkDrive DrvLet, UNCPath
oShell.NameSpace(DrvLet).Self.Name = DrvName
Select Case Err.Number
Case 0 ‘ No error

Case -2147023694
WshNetwork.RemoveNetworkDrive DrvLet, true, true
WshNetwork.MapNetworkDrive DrvLet, UNCPath
oShell.NameSpace(DrvLet).Self.Name = DrvName
Case -2147024811
WshNetwork.RemoveNetworkDrive DrvLet, true, true
WshNetwork.MapNetworkDrive DrvLet, UNCPath
oShell.NameSpace(DrvLet).Self.Name = DrvName
Case Else
Msg = «Mapping network drive error: « & _
CStr(Err.Number) & » 0x» & Hex(Err.Number) & vbCrLf & _
«Error description: « & Err.Description & vbCrLf
Msg = Msg & «Domain: « & WshNetwork.UserDomain & vbCrLf
Msg = Msg & «Computer Name: « & WshNetwork.ComputerName & vbCrLf
Msg = Msg & «User Name: « & WshNetwork.UserName & vbCrLf & vbCrLf
Msg = Msg & «Device name: « & DrvLet & vbCrLf
Msg = Msg & «Map path: « & UNCPath
WshShell.LogEvent 1, Msg, FileSrv1
End Select
End Function
‘==========================================================================

‘ Function InGroup(strGroup)

‘ strGroup — группа, принадлежность к которой проверяем

‘ COMMENT: проверка принадлежности пользователя к группе

‘==========================================================================

Function InGroup(strGroup)
InGroup=False
If InStr(UserGroups,«[CN=» & strGroup & «]») Then
InGroup=True
End If
End Function

Logon скрипт подключения сетевых дисков в AD