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

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

Автор: ginya
Дата сообщения: 20.02.2007 16:02
Laki7a
Ну, можно и батником, но тогда 2 вопроса:
1) Мне надо подключать каждому пользюку свой диск, по пути \\server\share\%username%. Только в НТ нет переменной %username%. Может она просто по другому называется? Или может ее там ваще нет?... Как быть-та?

2) Как в батнике поставить проверку на приндлежность к группе, что бы это в нт работало?
Автор: Laki7a
Дата сообщения: 21.02.2007 07:07
ginya
А много ли пользователей? И зачем вообще это делается? Я вот групповыми политиками переместил пользователям мои документы на сервак. Автоматически создаются папки для пользователя и всё просто замечательно!

Если про батники то думаю можно, залезь в тему Автоматизация
http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1

Вообще всё зависит от правильной формулировки цели!!!!! Пойми зачем это тебе!
Автор: ginya
Дата сообщения: 21.02.2007 08:29
Laki7a
Пользователей всего ~470. Компы НТ нужны, т.к. там спецПО, написанное 1000 лет назад неизвестно кем неизвестно как, но оч нужное.
У всех пользователей есть 3 стандартных сетевых диска.
2 из них вида \\server\share\%username% ("мои доки" - 1 папка. А надо 2.)
1 просто \\server\share\
Плюс почти всем пользователям еще нужны различные сетевые диски вида \\server\share\. Всем разное кол-во разных дисков (всего около 20 путей).
Для этого я создал (читай: адаптировал) скрипт, подключающий диски в зависимости от членства в группе. Но в НТ он не работает. Пока у меня есть батник, который определяет тип системы, и в случае НТ скрипт не отрабатывается. И диски народу не подключаются. Но так оставлять низзя.

Зачем мне? Начальство требует. %)
Автор: Laki7a
Дата сообщения: 21.02.2007 12:00
ginya

Ну согласен проблема. Но думаю решаемая. Сам признаюсь не знаю по этому изи в батниках в ссылке что я дал ))) я бы так сделал. Удачи!
Автор: SpectrosKop2
Дата сообщения: 07.03.2007 09:19
Отличный скрипт. Очень помогает в работе.
Однако, есть один неприятный момент. Мне зачастую приходится перекидывать пользователей вместе с документами с одного сервера на другой. Для этого приходится непосредственно менять скрипт. Однако есть способ проще. Имя сервера можно передавать скрипту как параметр. Вот так:

Dim Args: Set Args = WScript.Arguments

'Make sure the expected number of arguments were provided on the command line.
'if not, print usage text and exit.

If (Args.Count < 1) Then
    PrintUsage()
    wscript.quit 0
End If


Dim server
server = Args(0)

Sub PrintUsage()
    WScript.Echo "Usage:" + Chr(10) + _
                 "<Please enter server name OR ip address as argument>"
End Sub



А кроме того, изменения в реестр можно вносить не только с помощью запуска reg файла, но и с помощью команды
WshShell.RegWrite strName, varValue, [strtype]

Метод RegWrite записывает в реестр имя параметра или значение параметра, указанное в аргументе varValue. Если аргумент strName заканчивается на обратный слеш (\), то RegWrite записывает в реестр varValue как имя параметра. Иначе RegWrite записывает в реестр varValue как значение параметра. С помощью необязательного аргумента strtype можно задать тип параметра: REG_SZ и REG_EXPAND_SZ определяют строковые значения, REG_DWORD — 32-разрядное целое значение и REG_BINARY — 32-разрядное двоичное значение.
Автор: ShinePhantom
Дата сообщения: 15.03.2007 10:29
Что-то не пойму, а как быть, если пользователь у меня в двух группах разом?
Т.е. обычные пользователи получают себе диск в зависимости от отдела, т.е. группы безопасности.
А вот начальнику, которому нужно доступ к сразу двум папкам разных отделом, соответственно он и является членом двух групп, как быть?
Автор: ShinePhantom
Дата сообщения: 19.03.2007 13:03
В приницпе скрипт подключения дисков по группам пользователей работает. Однако на некоторых юзерах при логине выдает сообщение:

Сценарий: хххх\logon.vbs
Строка: 39
Символ: 1
Ошибка: 0х80005000
Код: 80005000
Источник: (null)


в 39 строке:
Set UserObj = GetObject("LDAP://" & strUserDN)


Жмешь ОК - и диски подключаются. Однако что же это за ошибка и как избавиться?
Автор: DAphnie
Дата сообщения: 26.06.2007 12:31
Т.к. в этой ветке я видел обсуждение вопросов маппинга принтеров, то спрошу - если подключаю принтер вот такой строчкой
WshNetwork.AddPrinterConnection "lpt1","\\Server\HPLaserJ"
то как проверить - не существует ли уже это подключение, чтобы не выходила ошибка?

Спасибо!
Автор: NumberNot
Дата сообщения: 02.07.2007 23:10
Сообщение удалено

Прошу прощения не туда запостил
Автор: IgorXI
Дата сообщения: 13.08.2007 05:23
Подкажите, у меня перестали подключатся автоматически диски в Windows Vista Ultimate, если выполнить скрипт в загруженном сеансе, то всё нормально, а при входе в систему все команды отрабатывают нормально, кроме подключений.
Автор: SergeyCVS
Дата сообщения: 13.08.2007 11:14
IgorXI
отключи User Account Control (UAC)
Автор: IgorXI
Дата сообщения: 14.08.2007 05:19
SergeyCVS
Спасибо, действительно помогло, но неужели нельзя как-то выполнять скрипт с временно повышеными правами до администратора?
Автор: SergeyCVS
Дата сообщения: 14.08.2007 12:15
IgorXI

Цитата:
Спасибо, действительно помогло, но неужели нельзя как-то выполнять скрипт с временно повышеными правами до администратора?

нужно смотреть настройки uac
Автор: strio912
Дата сообщения: 15.08.2007 10:26
Подскажите почему скрипт не видит основную группу пользователя?
Как сделать чтоб видел.
Автор: DarkSmoke
Дата сообщения: 30.08.2007 10:56
Я извиняюсь за такой вопрос. В первые сталкиваюсь с скриптами, нужна помощь.

Вот скрипт написанный Etalon'ом, я его отредоктировал под свои нужды, но он у меня не запускается, выдает ошибку:

Ошибка: Предполагает наличие инструкции
Код: 800А0400
Источник: Ошибка компиляции Microsoft VBScript

Помогите запустить плиз


Цитата:
<job id="vbs">
<script language="VBScript">
Set WshNetwork = WScript.CreateObject("WScript.Network")
WScript.Echo "Domain = " & WshNetwork.UserDomain
WScript.Echo "Clone-4bc878bd3 = " & WshNetwork.ComputerName
WScript.Echo "student = " & WshNetwork.UserName

With WshNetwork
Select Case .UserName
case "Вася"
.MapNetworkDrive "Y:", "\\192.168.100.5\Temp"
End Select
End With
</script>
</job>



Автор: VirwolfLEOne
Дата сообщения: 31.08.2007 21:27
DarkSmoke
Грохни строчки:

Цитата:
<job id="vbs">
<script language="VBScript">

и

Цитата:
</script>
</job>

короче первые две и последние две.
Автор: nem0xff
Дата сообщения: 11.10.2007 14:01
Добрый день!
переименование не работает на смонтированные сетевые диски, на локальные пожалуйста а на сетевые не хочет, в чем может быть проблема? в ручную естественно переименовать можно...
Автор: nem0xff
Дата сообщения: 12.10.2007 09:09
вобщем так... за имя отображаемое в папке мой компьютер отвечает параметр реестра находящийся в HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\MountPoints2\ЗДЕСЬ UNC путь примонтированного ресурса\

сам параметр называется _LabelFromReg (формат строковой)
в моем случае его нет вообще. если его создать и задать значение все отображается нормально, но это в XP в 2000 подругому и намного сложнее, если кому надо могу объяснить... отпишитесь
Автор: Strong_Gale
Дата сообщения: 19.10.2007 11:45
Спасибо за скрипт - разобрался в теории что он делает, один ламерский вопрос остался - как его запустить в политике? Просто добавить в файлы сценарий - не работает...
Автор: unreal 777
Дата сообщения: 24.10.2007 15:48
Скрипт чудесно работает, но иногда на Windows Server 2003 выдает вот такие ошибки.

Mapping network drive error: 424 0x1A8
Error description: Object required
Domain: DOMAIN
Computer Name: SERVER
User Name: admin

Device name: W:
Map path: \\DATA\Share

И так на каждую подключаемую букву. При этом диски все равно подключаются.
У меня подозрение, что это потому что под одним и тем же логином в систему сразу входят два пользователя ( админят с разных концов). Может быт кто-то подскажет более точно причину? Или куда копать?
Автор: IDaho
Дата сообщения: 01.02.2008 08:09
подскажите пожалуйста, что добавить в скрипт, чтобы на экране у пользователя не выскакивала ошибка при отработки скрипта:

Цитата:
Dim WshNetwork
    Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.RemoveNetworkDrive "h:"
    WshNetwork.MapNetworkDrive "h:", "\\server\folder"
WshNetwork.RemoveNetworkDrive "j:"
    WshNetwork.MapNetworkDrive "j:", "\\server\folder"

т.е. как сделать обход ошибки.

и что дописать чтобы если замапенного диска нету, то строка
Цитата:
WshNetwork.RemoveNetworkDrive "h:"
не отрабатывалась.

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

Автор: Frizen13
Дата сообщения: 29.02.2008 06:42
здраствуйте. прошу помощи в таком вот деле ковыряю скриптик по подключение сетевого диска, но перед этим он должен проверить если ещё какието подключённые сетевые диски и если они имеются то не отключать а создать ещё один...

For i = 0 to oDrives.Count - 1 Step 2
    ReDim myArray (oDrives.Count - 1)
'wshNetwork.RemoveNetworkDrive (oDrives.Item(i))
myArray(i) = oDrives.Item(i)
Next


вот тут я узнаю что типа есть диск но тепереь как мне выбрать свободный и создать?
Автор: Lusk
Дата сообщения: 17.03.2008 11:17
Народ помогите плзз
Есть принт сервер ***_ls и файл сервер ***_fs

надо что бы мапились диск к пользователю из группы юзер и пару принтеров по умолчанию файнпринт

Вставляю в логон скрипт в ад 2003 клиенты все хр сп2 скрипт лежит на диске D: ad

При входе в домен вообщи ничего не делается!

Option Explicit
'On Error Resume Next

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

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


UserGroups="Users"

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("Users") then
MapDrv "J:", FileSrv1

WshNetwork.AddWindowsPrinterConnection "\\***_ls\FINEPRT5"
WshNetwork.SetDefaultPrinter "\\***_ls\FINEPRT5"
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
Автор: FogFromDark
Дата сообщения: 24.03.2008 17:23
Народ, может кто сталкивался с такой проблемой, при использовании скрипта уважаемого SergeyCVS в логах иногда возникает ошибка и не мапятся диски:
Mapping network drive error: -2147022646 0x800708CA
Error description: Сетевое подключение не существует.
Я так понимаю, что сетевой интерфейс не успевает подняться до загрузки скрипта и лечится это путем установки фиксированного Link Speed и Full Duplex, правда помогает это не всегда.
Как бы вставить в скрипт проверку на подключение диска и если он не подключен, то выставить таймаут и еще раз повторить попытку?
Автор: ADMCGBTPS
Дата сообщения: 26.03.2008 11:48
Народ а как в VBS сделать синхронизацию времени, а потом еще и приделать запуск БАТников.
Автор: bordyuja
Дата сообщения: 26.03.2008 18:18
Народ,как сделать,чтобы при входе в домен,к каждому юзеру прикреплялась автоматом его личная папка которая лежит к примеру на \\pozitiv-server\личные папки\(название папки по фамилии но не такая как в логене)
Автор: Galaxy911
Дата сообщения: 12.04.2008 21:29
У меня так получилась подключить по ником в домене их личные папки
....
Case "docp"
MapRes = True
strResName = "\\Server\DOC$\"+WshNetwork.UserName
strResDrive = "P:"
.....
Автор: SergeyCVS
Дата сообщения: 12.04.2008 22:49
FogFromDark

Цитата:
в логах иногда возникает ошибка и не мапятся диски:
Mapping network drive error: -2147022646 0x800708CA
Error description: Сетевое подключение не существует.
Я так понимаю, что сетевой интерфейс не успевает подняться до загрузки скрипта и лечится это путем установки фиксированного Link Speed и Full Duplex, правда помогает это не всегда.
Как бы вставить в скрипт проверку на подключение диска и если он не подключен, то выставить таймаут и еще раз повторить попытку?

если комп в домене то можно выставить задержку перед применением ГПО

Добавлено:

bordyuja

Цитата:
Народ,как сделать,чтобы при входе в домен,к каждому юзеру прикреплялась автоматом его личная папка которая лежит к примеру на \\pozitiv-server\личные папки\(название папки по фамилии но не такая как в логене)

если имена ни как не связаны с какимньть атрибутом аккаунта в АД то ни как. только прямым прописыванием соотвия юзера и фолдера
Автор: shtrishochik
Дата сообщения: 23.04.2008 16:06
А как определить какой либо функцией рабочую директорию windows в vbs

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

str2-тут должна быть папка system32...как её определить?
fso.CopyFile str1,str2, True
Автор: sibovets
Дата сообщения: 11.07.2008 10:58
А как сделать так чтобы этот скрипт не применялся к выборочным серверам в AD???

Страницы: 1234

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


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