Автор: alecsandrb
Дата сообщения: 23.03.2005 17:07
В ходе экспериментов с WSH смог сделать следующий скрипт,
смысл которог в следующем: в зависимости от пользователя ему подключаются
несколько общих и один личный сетевой диск, путь к личному диску прописан
в строке <Профиль> и оттуда считывается.
На сервере для самого Администратора скрипт работает и все делает, а когда я указываю его в политике домена в автозагрузке
(GPO(Defaul Domain Policy)->Конфигурация пользователя->Конфигурация Windows->Сценарии входа\выхода->Вход) то на другом ПК домена при входе любым пользователем домена не срабатывает, по крайней мере дисков после входа нет.
После запуска этого скрипта вручную с сервера на рабочей станции получаю такую ошибку:
Сценарий: \\domain\netlogon\script.vbs
Строка: 18
Символ: 3
Ошибка: Table does not exist
Код: 80040E37
Источник: Provider
Кто-нибудь может помочь разобраться почему скрипт не срабатывает или же выдает сообщение о ошибке?
script.vbs
---------------------------------------
Option Explicit
Dim oArgs,oDrives,WshNetwork,i, ss, objUser, homepath, username, WshShell
dim objConnection, objRecordSet, CommandText, strUsers
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UserName = WshShell.ExpandEnvironmentStrings("%username%")
' получаем distinguishedName для текущего пользователя
Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")
' Запрос информации по учетной записи пользователя
CommandText = "Select cn, name, distinguishedName, canonicalName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://dc=dom1,dc=dom2,dc=dom3'"
CommandText = CommandText + " where sAMAccountName='" + UserName + "'"
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection
strUsers = objRecordset.fields("distinguishedName").Value
' получаем данные запроса о конкретном пользователе
set objUser = GetObject("LDAP://" & strUsers)
homepath = objUser.Get("profilePath")
' переменная profilePath = "\\domain\personals\ou1\ou2\$username"
' структура каталогов создана, права на эту папку ($username) - полный доступ
' подключаем сетевые диски для пользователя
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set oArgs=WScript.Arguments
Set oDrives = WshNetwork.EnumNetworkDrives
on error resume next
WshNetwork.MapNetworkDrive "Y:", homepath
WshNetwork.MapNetworkDrive "W:", "\\domain\common"
WshNetwork.MapNetworkDrive "Z:", "\\domain\programs"
'*** End