Как-то давно была поставлена задача подключать все общие сетевые ресурсы(сетевые диски) в домене Active Derectory автоматически, а не руками каждый раз при создании новой учетной записи. Написал Vbs скрипт. Скрипт рабочий и используется по сей день.
Скрипт проверяет: подключены ли соответствующие диски?
Скрипт проверяет: подключены ли соответствующие диски?
Правильно для дисков прописан путь?
Если не подключен - подключает.
Если не правильно подключен - отключает и подключает правильно
Если подключен - оставляет как есть (не отключает диск и не подключает заново).
Все диски (вне зависимости от статуса) переименовываются.
Option Explicit 'все переменные данного модуля должны быть объявлены с помощью операторов DIM или REDIM
Dim objNetwork, objShell, WshShell, usernames
Dim bukva, put, t, Return
Set objNetwork = WScript.CreateObject("WScript.Network")'Создаем объект WshNetwork
Set objShell = WScript.CreateObject("Shell.Application")'Создаем объект ...
Set objNetwork = wscript.CreateObject("wscript.network")
Set WshShell = CreateObject("WScript.Shell")
On Error Resume Next 'продолжать даже при ошибках
t = DiskMap("W", "\\srv1\Work") 'подключаем диски
wscript.sleep 2000 'думаем
objShell.NameSpace("W:").Self.Name = "Work" 'переименовываем диски
UserName = WshShell.ExpandEnvironmentStrings("%USERNAME%") 'Определяем имя пользователя
objShell.NameSpace("W:").Self.Name=UserName 'переименовываем диск-домашнюю папку
Function DiskMap(bukva, put) 'подключаем диски
bukva = bukva&":"
If Not IsShareCorrect(bukva, put) Then 'если диск не правильно подключен или не подключён то
If IsDriveMapped(bukva) Then 'если буква диска используется - отключим его
Return = WshShell.Run("net use "&bukva&" /delete /yes", 0, true)
End If
objNetwork.MapNetworkDrive bukva, put , True ' подключаем диск
End If
End Function
Function IsShareCorrect(strDriveLetter, strShare) 'проверяет, правильно ли подключён диск
Dim objNetwork
Dim colDrives
Dim i
Set objNetwork = CreateObject("WScript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
If colDrives.Count = 0 Then
IsShareCorrect = False
Else
IsShareCorrect = False
If Len(strShare) = 0 Then
For i = 0 To (colDrives.Count - 1) Step 2
If UCase(colDrives.Item(i)) = UCase(strDriveLetter) Then
IsShareCorrect = True
Exit For
End If
Next
Else
For i = 0 To (colDrives.Count - 1) Step 2
If UCase(colDrives.Item(i)) = UCase(strDriveLetter) _
And UCase(colDrives.Item(i + 1)) = UCase(strShare) _
Then
IsShareCorrect = True
Exit For
End If
Next
End If
End If
End Function
Function IsDriveMapped(strDriveLetter) 'проверяет, вообще диск подключён?
IsDriveMapped = IsShareCorrect(strDriveLetter, "")
End Function
Комментариев нет:
Отправить комментарий