Страница 1 из 1

Как перемапить диск, с помощью VBS?

Добавлено: 2005-05-16 12:21:45
ser
Имеется около 500 компьютеров, на которых подсоединён сетевой диск (скажем X), с восстановлением при входе в систему.
С помощью каких средств VBS можно отсоединить текущий подключить другой зашаренный ресурс на эту же букву X?
Может это проще сделать с помощью реестра?

Добавлено: 2005-05-16 13:48:07
Гость
Э... А домен есть? Наверное есть, на 500 компов-то.
Можно батник простой настругать, команда
net use /?
тебе поможет....

Спасибо!

Добавлено: 2005-05-17 7:52:01
ser
Да, всё классно, помогло....
всё как надо работает....

Re: Как перемапить диск, с помощью VBS?

Добавлено: 2008-10-18 0:50:45
slim
Так прикольней :smile:
Не помню уже где взяли образец скрипта, но автору сенкс :drinks:

Код: Выделить всё

'========================================================================== 
' 
' VBScript Source File 
' 
' NAME: MapDrivesInGroup.vbs 
' 
' VERSION: v1.1 
' 
' AUTHOR: SergeyCVS 
' 
' COMMENT: Подключение сетевых дисков на основе групп с записью ошибок в EventLog 
' 
'========================================================================== 

Option Explicit 
'On Error Resume Next 

Dim WshShell, WshNetwork 
Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj 

' Задаем имя файлового сервера, при использовании нескольких серверов 
' создаем несколько констант и используем их при вызове MapDrv 
Const FileSrv1 = "\\MAIN" 
'Const FileSrv2 = "\\SRV2" 

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 

' 
if InGroup("admin_g") then 
MapDrv "G:", "\\main\admin_g$"," " 
end if 

if InGroup("admin_i") then 
MapDrv "I:", "\\main\admin_i$"," " 
end if 




'

'========================================================================== 
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) 
InGroup=False 
If InStr(UserGroups,"[CN=" & strGroup & "]") Then 
InGroup=True 
End If 
End Function