Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

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

Автор: FogFromDark
Дата сообщения: 28.07.2008 16:23
Уважаемые,
При использовании несколько модифицированного скрипта SergeyCVS мапящего диски и переименовывающего их:


Цитата:
[/q]
' COMMENT: Подключение сетевых дисков с записью ошибок в EventLog

Option Explicit
On Error Resume Next

Dim WshShell, WshNetwork, objShell        ' , objFSO

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
'Set objFSO = CreateObject( "Scripting.FileSystemObject" )

'objFSO.DeleteFolder( "C:\Program Files\Common Files\Symantec Shared\VirusDefs\tmp*" )

' Задаем имя файлового сервера, при использовании нескольких серверов
' создаем несколько констант и используем их при вызове MapDrv

Const FileSrv1 = "\\SRV1"
'Const FileSrv2 = "\\SRV2"

MapDrv "G:",FileSrv1 & "\folder1", "Общие папки"
MapDrv "W:",FileSrv1 & "\folder2" , "Специализированные папки"
MapDrv "Y:",FileSrv1 & "\folder3", "Папки департаментов"
'==========================================================================
'
' Function MapDrv(DrvLet, UNCPath)
'
' DrvLet - Буква устройства
' UNCPath - Сетевой путь
'
'==========================================================================


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, "."
End Select
End Function

Цитата:


в логах пишет следующее:

Цитата:

Mapping network drive error: 424 0x1A8
Error description: Object required
Domain: MSK
Computer Name: User
User Name: Username

Device name: Y:
Map path: \\srv1\folder1
[q]
Автор: Raene
Дата сообщения: 29.07.2008 08:26
Подскажите пожалуйста, как сделать в скрипте проверку на наличие сетевого подключения? Если проверка прошла, то выполнять скрипт дальше, если нет, то ничего не делать. В случае успешной проверки, проверить следующее: подмаплен ли сетевой диск пользователя на опреденную букву. Если подмаплен правильный диск, то выполнять скрипт дальше, если подмаплен другой диск, то остановить выполнение скрипта. Правильный сетевой диск нужно взять из AD. Имя пользователя, чтобы определялось по залогиненному пользователю на машинке.

Заранее спасибо.
Автор: mantis777
Дата сообщения: 11.11.2008 07:35
А как добавить в скрпит, что мапит диски, что бы в массив попадали значения не только групп, которым явно принадлежит пользователь, но и те группы, в которые входят группы, которым он принадлежит. Т.е. если пользователь входит в группу А, то все ок. И если входит в группу Б, то тоже в значениях есть и А и Б. Но если группа А входит в С, то в массиве все равно будут теже А и Б. Как там заставить появиться и С ?
Автор: zorg1888
Дата сообщения: 23.12.2008 21:35

Цитата:
А как определить какой либо функцией рабочую директорию windows в vbs

Set fso = CreateObject("Scripting.FileSystemObject")
Dim str1,str2
str1="\\wd2000\NETLOGON\sst3d.scr"

str2-тут должна быть папка system32...как её определить?
fso.CopyFile str1,str2, True


http://www.microsoft.com/technet/scriptcenter/scripts/templates/adsi/basic/gui.mspx?mfr=true


Цитата:
А как сделать так чтобы этот скрипт не применялся к выборочным серверам в AD???

попробуй использовать условие If с проверкой параметра WshNetwork.ComputerName
Автор: Servers
Дата сообщения: 17.02.2009 17:12
To mantis777: Согласен очень дельный вопрос.

Как быть если на шары даются права Domain Local группам, ведь так считается правильно для будущего расширения.
Например есть сервер: Srv1
Есть шара: Share
NTFS rights: DL_Share (это группа является Domain Local в домене Test.ru) даны права на чтение, но в принципе не важно
в группу DL_Share входит группа AccountDepartment.
В группу AccountDepartment входит пользователь test1

Так вот господа теперь звучит вопрос:

При логоне пользователя test1 скрипт отработает только для группы AccountDepartment и он не сможет подключить шару Share. Сразу оговорю, что группа AccountDepartment входит во многое кол-во аналогичных групп DL_Share которым даны права доступа по NTFS.
Автор: DTLA
Дата сообщения: 19.02.2009 12:28
Вопрос такого плана, подключаю диски скриптом

===========================================================

Set WshNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")
On Error Resume Next

wshNetwork.RemoveNetworkDrive "V:"
wshNetwork.MapNetworkDrive "V:", "\\DFS_LINK\Share1\"
objShell.NameSpace("Y:").Self.Name = "ShareName1"

wshNetwork.RemoveNetworkDrive "R:"
wshNetwork.MapNetworkDrive "R:", ""\\DFS_LINK\Share2\"
objShell.NameSpace("Z:").Self.Name = "ShareName1"

===========================================================

на Windows XP (SP2 + SP3) проходит на ура (через GPO), но на Windows Vista SP1 (пользователь имеет теже самые права), подключение не проходит, UAC отключен...

в чем может быть загвоздка?
Автор: YURETS777
Дата сообщения: 02.04.2009 11:26
Как сделать отключение всех сетевых соединений (аналог net use * /delete /y)

WshNetwork.RemoveNetworkDrive "*", True, True

Выдает ошибку
Автор: noklaf
Дата сообщения: 22.07.2009 20:28
Как сделать возможность авторизации? Например:
MapDrv "Буква диска" ,"Подключаемая папка" , "Имя в проводнике", "Логин", "Пароль"

Бывает полезно, когда нужно подключить папку с сервера другой организации.

Автор: ZeusKrd
Дата сообщения: 27.01.2010 11:48
Помогите пожалуйста!
Что есть:
1. MS Server 2008.
2. компьютеры с XP, на которых работают кассиры.
3. у кассиров перемещаемые профили.
4. На компьютерах кассиров мапится диск R:, который расшарен на тех же компах.
CompPath = "\\" & WshNetwork.ComputerName &"\printer"
    MapDrv "R:", CompPath
5. Кассиры постоянно сидят за разными компьютерами.
6. На диск R: сохраняется авиа билет, который оттуда подхватывает 1с 7.7, это сделано для учета продаж. От локального диска отказались, т.к. билеты оформляются и в терминальном режиме(RDP) одновременно несколькими кассирами, поэтому у них тоже мапится R: только по пути "\\hq_star2\profile$\terminal_users\" & WshNetwork.UserName &"\printer".
Проблема:
Диск R: смапится на компе с именем callcent1, все прекрасно работает.
Когда этот же кассир садится за компьютер, к примеру, callcent5, то тут возникает проблема. На компьютере callcent5 мапится "Printer на callcent1( R: )". Помогает только отключение диска, только он из проводника не исчезает, но винда пишет что это диск отключен, и перезагрузка.
Заранее благодарен за помощь!
Автор: ZeusKrd
Дата сообщения: 29.01.2010 10:01
Никто помочь не может?
Автор: KPashkoff
Дата сообщения: 06.02.2010 20:49
Тема супер очень помогла.

У меня все мапиться при помощи vbs через GRO
Но сталкнулся с такой проблемой:

Войдя в домен пользователям мапиться одно, а если в терминал должно мапиться другое.

Подскажите как это реализовать.
Автор: spike
Дата сообщения: 09.02.2010 16:37
DTLA

Цитата:
Вопрос такого плана, подключаю диски скриптом

===========================================================

Set WshNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")
On Error Resume Next

wshNetwork.RemoveNetworkDrive "V:"
wshNetwork.MapNetworkDrive "V:", "\\DFS_LINK\Share1\"
objShell.NameSpace("Y:").Self.Name = "ShareName1"

wshNetwork.RemoveNetworkDrive "R:"
wshNetwork.MapNetworkDrive "R:", ""\\DFS_LINK\Share2\"
objShell.NameSpace("Z:").Self.Name = "ShareName1"

===========================================================

на Windows XP (SP2 + SP3) проходит на ура (через GPO), но на Windows Vista SP1 (пользователь имеет теже самые права), подключение не проходит, UAC отключен...

в чем может быть загвоздка?

просто запустив скрипт диски подключаются ?

у меня на Windows 7 при логоне не подключаются, а вот если потом запустить, то без проблем
Автор: Agent_Alex
Дата сообщения: 25.06.2010 10:34
Чтобы на Windows 7 заработало, нада через GPO в реестре добавлять ключик
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLinkedConnections типа DWORD со значением 1.
При этом UAC отключать не нада)

http://support.microsoft.com/kb/937624
Автор: olview
Дата сообщения: 28.07.2010 04:54
Привет всем, на подскажите как сменить логон-скрипт у всех пользователей в домене именно скриптом????
Автор: vladimiratm
Дата сообщения: 01.03.2011 14:41
Добрый день.
Есть vbs скрипт для подключения сетевых дисков у пользователей.

Код: Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set wn = WScript.CreateObject("WScript.Network")
Set ap = CreateObject("Shell.Application")
if fs.DriveExists("Y:") then wn.RemoveNetworkDrive "Y:", true, true
wn.MapNetworkDrive "Y:", "\\server\share01", false, login, password
if fs.DriveExists("Z:") then wn.RemoveNetworkDrive "Z:", true, true
wn.MapNetworkDrive "Z:", "\\server\share02", false, login, password
Автор: adamst
Дата сообщения: 01.07.2011 13:35
спасибо за скрипт, легко адаптировать под себя, очень удобно
Автор: Valery12
Дата сообщения: 01.07.2011 13:54
vladimiratm а пароль не в русской раскладке случайно?

Цитата:
Привет всем, на подскажите как сменить логон-скрипт у всех пользователей в домене именно скриптом????
если имеется ввиду имя скрипта, указанное в свойствах юзера, вкладка профиль, то все гораздо проще, в "Active Directory пользователи и компьютеры" выделяем сразу всех нужных юзеров, в контексном меню - свойства - вкладка профиль и указываем новое имя скрипта
Автор: cucmkolya
Дата сообщения: 10.08.2011 12:34
Столкнулся с подобным на Windows7 Pro:

Что имеем:

Ноут под управлением Windows 7 Pro (в домене)
Шара на компах не в домене (шара под управлением win2003)

Скрипт подключения шары:

DayNumber = Weekday(Date())
Set wss = CreateObject("Wscript.Shell")
Set Wnet = Wscript.CreateObject("Wscript.Network")

Wnet.MapNetworkDrive "W:", "\\share1\disk1"
Wnet.MapNetworkDrive "Y:", "\\share2\disk2"


select case DayNumber
    case 1: wss.Popup "Сегодня выходной " &Date(), 2,"Вход домен выполнен!"
    case 2: wss.Popup "Сегодня понедельник " &Date(), 2,"Вход домен выполнен!"
    case 3: wss.Popup "Сегодня вторник " &Date(), 2,"Вход домен выполнен!"
    case 4: wss.Popup "Сегодня среда " &Date(), 2,"Вход домен выполнен!"
    case 5: wss.Popup "Сегодня четверг " &Date(), 2,"Вход домен выполнен!"
    case 6: wss.Popup "Сегодня пятница " &Date(), 2,"Вход домен выполнен!"
    case 7: wss.Popup "Сегодня суббота " &Date(), 2,"Вход домен выполнен!"
End Select

И естественно ничего не работает

Как лечится:
Заходим в Учетные записи пользователей/Изменение параметров контроля учетных записей - опускаем бегунок в самый низ (отключаем).
После чего идем в Администрирование учетных записей и в учетных данных добавляем наши шары...а именно в виде домен\пользователь и пароль (в соответствующие поля формы).

т.е. получится:

Адрес в Интернете или в сети: share1
Имя пользователя: share1\user - обязательно прописываем домен для конкретного юзера.
Пароль: вводим пароль для нашего юзера

После чего выходим из домена и заходим обратно...все работает!

Автор: Alabin
Дата сообщения: 29.09.2011 12:51
Если комп не в домене, как тогда получать данные о пользователе (имя, группа)
Автор: hunter11
Дата сообщения: 28.10.2011 13:56
SergeyCVS

Как модифицировать ваш скрипт, чтобы еще дополнительно кроме групп анализировал и логины в этой группе, у нас в одной группе у разных пользователей подключаются разные шары ???

upd - разобрался
Автор: hunter11
Дата сообщения: 30.12.2011 08:44

Цитата:
Как сделать отключение всех сетевых соединений (аналог net use * /delete /y)

WshNetwork.RemoveNetworkDrive "*", True, True

Выдает ошибку



Вот аналог на vbs есть:

Set oDrives = WshNetwork.EnumNetworkDrives
For Each Drive In oDrives
    On Error Resume Next
    WSHNetwork.RemoveNetworkDrive Drive, TRUE, TRUE
next
Автор: sergey5864
Дата сообщения: 08.02.2012 19:03
Пишу вот такой скрипт в windows server 2008 для пользователя с windows 7

Код:
'==========================================================================
'
' Function MapDrv(DrvLet, UNCPath)
'
DrvLet = "v:"
UNCPath = "\\172.18.1.1\Фотографии-каталог"
'
' COMMENT: Подключение сетевых дисков с записью ошибок в EventLog
'
'==========================================================================


Function MapDrv(DrvLet, UNCPath)

Dim WshNetwork ' Object variable
Dim Msg

Set WshNetwork = WScript.CreateObject("WScript.Network")

On Error Resume Next
WshNetwork.RemoveNetworkDrive DrvLet
WshNetwork.MapNetworkDrive DrvLet, UNCPath

Select Case Err.Number
Case 0 ' No error

Case -2147023694
WshNetwork.RemoveNetworkDrive DrvLet
WshNetwork.MapNetworkDrive DrvLet, UNCPath

Case -2147024811
WshNetwork.RemoveNetworkDrive DrvLet
WshNetwork.MapNetworkDrive DrvLet, UNCPath

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, "\\SRV"
End Select

End Function

Автор: CrazyMax80
Дата сообщения: 04.02.2013 05:37
olview


Код:
'Инициализация
Dim objRootDSE
Set objRootDSE = GetObject("LDAP://RootDSE")
Dim strDNC
strDNC = objRootDSE.Get("DefaultNamingContext")
Dim objDomain
Set objDomain = GetObject("LDAP://" & strDNC)

'Типа функция main()
EnumTop(objDomain)

'Процедуры и функции
Sub EnumTop(objContainer)
objContainer.Filter = Array("top")
Dim objMember
For Each objMember In objContainer
If (objMember.Name <> "Configuration") And (objMember.Name <> "Schema") Then
If (objMember.Class = "user") And (objMember.scriptPath = "logon.cmd") Then 'сюда впиши свою проверку содержимого scriptPath
WScript.Echo objMember.Class & " = " & objMember.AdsPath & " LS=" & objMember.scriptPath & " change to LogonScript.vbs"
objMember.Put "scriptPath", "LogonScript.vbs" 'здесь укажи имя своего логон-скрипта
objMember.SetInfo
End If
EnumTop(objMember)
End If
Next
End Sub



Автор: Tiotimolin
Дата сообщения: 17.03.2015 09:47
Спасибо за скрипты, очень упрощают жизнь
Автор: Hydras
Дата сообщения: 11.04.2016 19:31
Добрый день всем!

Тема обмусолена уже тысячу раз, но никакие бубны мне не помогли

Есть VBS-скрипт, мапящий сетевой диск при логине доменного юзера:

Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive "S:", "\\fs\D", true

Прописал этот скрипт на сценарий входа для конкретной группы пользователей, после логина диск не подмапливается, при ручном запуске скрипт работает. При методе запуска скрипта через Актив Директори - всё работает. Просто это не совсем удобно на каждого пользователя указывать данный скрипт для сценария входа в свойствах доменной учётки Актив Директори.
В предыдущей компании работало через групповые политики, а в другую контору пришёл и не хочет работать таким макаром....
Дайте пожалуйста векторы хода решения!
Автор: pshiki
Дата сообщения: 12.09.2016 17:28
Здравствуйте, пытаюсь реализовать подключение сетевых дисков через скрипт, использую следующий код:


Код:
Set Wnet = Wscript.CreateObject("Wscript.Network")
Wnet.EnumNetworkDrives()
Wnet.RemoveNetworkDrive("Q:")
Wnet.RemoveNetworkDrive("W:")
Wnet.MapNetworkDrive "Q:", "\\192.168.0.***\company"
Wnet.MapNetworkDrive "W:", "\\192.168.0.***\InfoBases", , "user", "******"
Автор: ipmanyak
Дата сообщения: 13.09.2016 09:26
pshiki проверяй предварительно существование буквы диска или добавляй параметры.
https://community.spiceworks.com/scripts/show/1356-check-map-rename-drives-logon-script-using-if-then
https://msdn.microsoft.com/en-us/library/d16d7wbf(v=vs.84).aspx
http://www.pctools.com/guides/scripting/detail/137/?act=reference
Автор: pshiki
Дата сообщения: 13.09.2016 10:02

Цитата:
ipmanyak
спасибо за информацию.
Для моего решения хватило строки On error resume next после определения констант

Страницы: 1234

Предыдущая тема: Настройка Kiwi Syslog Daemon под DFL700


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.