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

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

Автор: finder
Дата сообщения: 03.04.2006 16:33

Цитата:
sVx
ок, гляну

Добавлено:
sVx

смотрим, MapDrivesInGroup.vbs, v1.1 добавил возможность именование сетевых дисков в проводнике


Подскажите пожалуйста как будет выглядеть данный скрипт с проверкой групп в домене, например domainex.com? Я как понимаю, нужно заменить:

Function InGroup(strGroup)
InGroup=False
If InStr(UserGroups,"[CN=" & strGroup & "]") Then
InGroup=True
End If
End Function
Автор: SergeyCVS
Дата сообщения: 03.04.2006 18:00
finder
править ни чего не надо, у данного скрипта нет жесткой привязки к домену
Автор: Reznikoff
Дата сообщения: 03.04.2006 23:54
Проблема с переименованием сетевых дисков в вин2000.
Как я понял чтобы их там переименовать надо всего лишь писать не

Код:
oShell.NameSpace(DrvLet).Self.Name = DrvName
Автор: finder
Дата сообщения: 04.04.2006 12:51

Цитата:
finder
править ни чего не надо, у данного скрипта нет жесткой привязки к домену


Проблема: не выполнялосль условие поиска пользователей в группе Domain Users если пользователь входит ещё в одну группу, например grex. OC Windows 2003 SP1 Eng Ent

Заметил следующее: Когда меняю в свойствах пользователя Set Primary Group на grex, то в скрипте срабатывает поиск по Domain Users.
Иначе условие определения группы не выполняется:
if InGroup("Domain Users") then
MapDrv "N:", FileSrv1 & "\Doc","Docex"
end if

Автор: Master_Alex
Дата сообщения: 04.04.2006 14:23
К этому скрипту ещё бы принтера добавить - чтоб полнее скрипт был.
Автор: Etalon
Дата сообщения: 11.04.2006 11:05
SergeyCVS Функцию InGroup

Код: Function InGroup(strGroup)
InGroup=False
If InStr(UserGroups,"[" & strGroup & "]") Then
InGroup=True
End If
End Function
Автор: Etalon
Дата сообщения: 13.04.2006 07:38
Master_Alex Можно использовать вот такой сценарий, только перед использованием необходимо:
с помощью оснастки "Пользователи и компьютеры", для всех компьтеров установить атрибут "Размещение", в свойствах компьютеров.
Например, "Отдел №1", "Отдел №2", "Отдел №3", "Отдел №4"

Код:
' VB Script Document
option explicit

Dim WshNetwork, SysInfo, ComputerDN, Computer, Printers, i, Location

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

ComputerDN = SysInfo.ComputerName
Set Computer = GetObject("LDAP://" & ComputerDN)
Set Printers = WshNetwork.EnumPrinterConnections

For i = 0 to Printers.Count - 1 Step 2
If Printers.Item(i) = "LPT3" then
WshNetwork.RemovePrinterConnection Printers.Item(i), true
End If
Next

Location = Computer.Get("Location")

Select Case Location
Case "Отдел №1"
WshNetwork.AddPrinterConnection "LPT3", "\\Server\Printer01"
WshNetwork.AddWindowsPrinterConnection "\\Server\Printer01"
WshNetwork.SetDefaultPrinter "\\Server\Printer01"
Case "Отдел №2"
WshNetwork.AddPrinterConnection "LPT3", "\\Server\Printer02"
WshNetwork.AddWindowsPrinterConnection "\\Server\Printer02"
WshNetwork.SetDefaultPrinter "\\Server\Printer02"
Case "Отдел №3"
WshNetwork.AddPrinterConnection "LPT3", "\\Server\Printer03"
WshNetwork.AddWindowsPrinterConnection "\\Server\Printer03"
WshNetwork.SetDefaultPrinter "\\Server\Printer03"
Case "Отдел №4"
WshNetwork.AddPrinterConnection "LPT3", "\\Server\Printer04"
WshNetwork.AddWindowsPrinterConnection "\\Server\Printer04"
WshNetwork.SetDefaultPrinter "\\Server\Printer04"
End Select
Автор: Master_Alex
Дата сообщения: 13.04.2006 10:39
Etalon
Спасибо, я с принтерами vbs свою юзаю, про принтеры для SergeyCVS я как вариант сказал - народу пригодицца, а идея с Location мне понравилась, вот тут подумал мож в схему расширить и для принтеров вообще свой атрибут добавить
По поводу подключения сценариев - думаю стоит тебе завести отдельную тему. На вскидку - проблема с доменом/сервер загружен/стоит синхронное выполнение сценариев в GPO - адм. шаблоны - система - сценарии
Автор: Etalon
Дата сообщения: 13.04.2006 12:41
У принтеров уже есть такой атрибут.
Просто у меня принтеров мало и вроде как проще их просто перечислить, чем Location'ы сравнивать
Автор: Seeth
Дата сообщения: 21.04.2006 16:33
Тема как раз в точку! Большое всем спасибо!
Есть еще один маленький вопросик: как мапить сетевые диски не только в соответствии с группой пользователя, но и в зависимости от его имени входа в систему. Мне нужно в некоторых случаях мапить по группе, а в некоторых по имени входа пользователя в систему. Как это можно реализовать в данном скрипте? Может кусок кода подскажете, или функцию нужную?

Заранее благодарен.
Автор: Etalon
Дата сообщения: 24.04.2006 08:29
Seeth

Код:
<job id="vbs">
<script language="VBScript">
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Computer Name = " & WshNetwork.ComputerName
WScript.Echo "User Name = " & WshNetwork.UserName

With WshNetwork
Select Case .UserName
case "Вася"
.MapNetworkDrive "E:", "\\Server\Вася"

case "Петя"
.MapNetworkDrive "E:", "\\Server\Петя"
...

case "Витя"
.MapNetworkDrive "E:", "\\Server\Витя"
End Select
End With
</script>
</job>
Автор: Seeth
Дата сообщения: 25.04.2006 10:19
Огромное спасибо! Прямов точку! У меня тут сроки горят, и это как бальзам на душу

Спасибо еще раз. Клевый форум! Надо почаще на него заглядывать - очень много полезной и интересной информации.

Добавлено:
Смежный вопрос... Извиняйте, если оффтоп.
Как раздать права пользователям на разделе NTFS, что бы в каталоге, в котором находится куча подкаталогов, пользователи видели только те, на которые у них есть права, а остальных не видели? У меня получается сделать толко так, что бы доступ у них был только к своим, но видят они даже те к которым вообще нету доступа. А мне нужно что бы ничего лишнего они не видели и даже не подозревали о наличии еще каких то подкаталогов, кроме своих.

Как это сделать средствами MS Windows 2003 Server Enterprise edition?
Автор: Etalon
Дата сообщения: 26.04.2006 12:06
Seeth
Это дело уже где-то обсуждается. К сожалению, не помню в какой теме.
В кратце, тебе нужна вот такая хрень ABEUI.msi. Взять её можно на сайте Микрософт
Автор: Seeth
Дата сообщения: 27.04.2006 11:03
ЗАРАБОТАЛО!!! Супер! Спасибо. Буду обращатся если что
Автор: alexitd
Дата сообщения: 28.04.2006 11:21
Etalon

Цитата:
У принтеров уже есть такой атрибут.
Просто у меня принтеров мало и вроде как проще их просто перечислить, чем Location'ы сравнивать
а вот у меня много...
как перебрать все принтеры в AD, чтоб посравнивать Location?
Автор: alexitd
Дата сообщения: 02.05.2006 16:50
нашел сам тут
Автор: ndvuser
Дата сообщения: 23.08.2006 12:32
Доброго времени.
Подскажите пожалуйста как к выше указаному скрипту SergeyCVS по мапированию дисков прикрутить задачку по перемещению папки "Мои документы" на сервер (изменение в свойствах пути к папке), на сервере для каждого пользователя создается своя шара \\srv\user$.
Причем у определенных пользователей (с ноутами) этого происходить не должно, но они все у нас посчиталы.
Автор: ndvuser
Дата сообщения: 26.08.2006 15:52
С папкой Мои документы разобрался, ее через GPO перенаправлять оч легко.
Теперь осталось разобраться с принтерами, как бы их прикрутить к данному скипту?
И не подскажите какой командой из скрипта запустить файл регистра, чтоб бэз шуму и пыли все внеслось в реестр?
Автор: ndvuser
Дата сообщения: 28.08.2006 10:34
Вот народ что получилось! Спасибо всем за помощь. Мапит диски, принтеры, вносит изменения в регистр.

Код: Option Explicit
'On Error Resume Next

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

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

UserGroups=""

Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set objSysInfo = CreateObject("ADSystemInfo")
Set Printers = WshNetwork.EnumPrinterConnections

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("KlientBank") then
MapDrv "J:", FileSrv2 & "\notes$","Клиент Банк"

WshNetwork.AddWindowsPrinterConnection "\\SRV5\HP2420"
WshNetwork.SetDefaultPrinter "\\SRV5\HP2420"
end if

WSHShell.Run "regedit /s 1C.reg",2

MapDrv "S:", FileSrv2 & "\Soft$", "Программы"
MapDrv "O:", FileSrv2 & "\Documents$","Документы"
MapDrv "W:", FileSrv2 & "\1C$","1С"


'==========================================================================
' Далее ничего не трогаем!!

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
Автор: Laki7a
Дата сообщения: 07.09.2006 11:21
ndvuser


Цитата:
WshNetwork.AddWindowsPrinterConnection "\\SRV5\HP2420"
WshNetwork.SetDefaultPrinter "\\SRV5\HP2420"


В часности я дополнительно к этому использую:
WshNetwork.AddPrinterConnection "lpt1","\\Server\HPLaserJ"

А как проверить существует ли уже подключенный такой принтер и используется ли уже этот порт? Просто если сеществует - он выдаёт ошибку! Как её отловить и пойти по другой ветки выполнения? (что то вроде если уже есть, то удаляем и назначаем по нашему)
Автор: Asker80
Дата сообщения: 08.09.2006 02:25
Laki7a

Цитата:
А как проверить существует ли уже подключенный такой принтер и используется ли уже этот порт? Просто если сеществует - он выдаёт ошибку! Как её отловить и пойти по другой ветки выполнения? (что то вроде если уже есть, то удаляем и назначаем по нашему)

Просто удаляем подключение (без всяких проверок), а потом мапим, как с дисками.
Автор: Sandman77
Дата сообщения: 12.09.2006 16:10
весело всё.. вот тока есть куча компов 95 и 98 винды.. и юзернейм там получаеться как то не всегда получить из этого обьекта - WshNetwork... на клиентах ставицца естественно AD клиент.... как побороть ?

Добавлено:
ошибка типа - "пользователь не поключён к сети" хотя дискэ мапяться нормально...
мне имя нужно для подключения хоумкаталога.. составляю имя.. должно работать.. но не работает .. почему ?
Автор: lynnik
Дата сообщения: 13.09.2006 14:34
хороший скрипт.

а может кто переделает скрипт подключения сетевых дисков по принципу принадлежности к тому или иному OU (организационная единица в AD)
Автор: Sandman77
Дата сообщения: 13.09.2006 15:17
lynnik


я б не парился... для каждого OU свою политику завёл бы и там стартап скрипт свой влепил... для того веть оушки и делают шоп свою политику вести

Добавлено:
во.. нашол на Мелкософте

Do While sUser = ""

If DateDiff("s", startTime, Now) > 30 Then Wscript.Quit

Wscript.Sleep 500

sUser = oNet.UserName

Loop

пишут шо для 9х виндов помогает

Добавлено:
попробовал - не помогает .

всё так же ругаецца на sUser = oNet.UserName "пользователь не подключён к сети, указанная служба не существует"
к тому же говорит на Wscript.Sleep - метод не поддерживаеться.
Автор: lynnik
Дата сообщения: 27.09.2006 14:43
SergeyCVS
уже есть диск замапленый диск,
который в проводнике пиден как "FolderName on ServerName DriveLetter:"

теперь твоим скриптом маплю диск с такойже буквой. скрипт старый диск отключает, новый подключает, НО не переименовывает в проводнике. он все также остается "FolderName on ServerName DriveLetter:"
Автор: MLG
Дата сообщения: 19.10.2006 16:40
Поднимаю тему.

ndvuser
Больше к вам наверное вопрос, ну или ко всем кто сможет ответить.
Скрипт замечательный, но хотелось бы дополнить его определением с какого компьютера юзер логинится.
Что то типа

If "user logon from Computername такой то, такой то и такой то" то then
что то делать
else
делать что то другое
end if

Как вот этот "user logon from computername" описать? Сам к сожалению в vbs не силен, но копипасить умею
Компьеютеров несколько будет.

Автор: ronvaleron
Дата сообщения: 13.12.2006 16:02
А как сделать что бы диски мапить можно было про primary group.
То есть если стоит primary group test такая- то то мапиться такой - то диск X
если primary group test2 мапиться такой - то диск Y
Автор: finder
Дата сообщения: 15.12.2006 10:18
Подскажите пожалуйста как в строчках:

Цитата:
if InGroup("User_group") then
MapDrv "R:", FileSrv2 & "\Doc","Док"
end if


Добавить изменения ключей реестра для запрета usb, cdrom и floppy на компьютере?
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\UsbStor]
"Start"=dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom]
"Start"=dword:00000004

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\flpydisk]
"Start"=dword:00000004
Автор: ginya
Дата сообщения: 19.02.2007 13:57
Люди!
У меня следующая проблема с подобным скриптом:
Мне, к великому сожалению, приходится держать еще пару десятков машин на NT4. Там нет некоторых объектов, использующихся в этом коде. Так вот есть ли у кого че-нить подобное для НТ?
Буду весьма признателен... =))
Автор: Laki7a
Дата сообщения: 20.02.2007 04:49
Для нт пользуй батники ))) напиши скрипт для них используя net use

Страницы: 1234

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


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