|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Подключение сетевых дисков через .vbs |
|
|
Подключение сетевых дисков через .vbs
|
![]() Ветеран Сообщения: 1114 |
Есть скрипт для подключения сетевых дисков.
Текст vbs-скрипта: set fs=Wscript.CreateObject("Scripting.FileSystemObject") set wn=Wscript.CreateObject("Wscript.Network") if fs.DriveExists("T:") then wn.RemoveNetworkDrive "T:", true, true wn.MapNetworkDrive "T:","\\server\share",true Если запустить этот же скрипт из секции Startup, то происходит подключение диска, который система помечает как отключенный, но тем не менее ресурс остается подключенным. Понятно, что это разные секции и отвечают за загрузку для пользователей и компьютеров. Вопрос 1. Если это так и задумано, то кто может объяснить природу такого поведения подключаемых дисков. Особенно интересует 2 случай (неотключаемый диск). Вопрос 2. Как распространить скрипт ,запускаемый из секции Startup,- для группы компьютеров (не для всех компьютеров), являющихся членами домена. |
|
------- Отправлено: 14:55, 13-09-2006 |
Ветеран Сообщения: 688
|
Профиль | Отправить PM | Цитировать подключаете "W:" а проверку на наличие и удаление "Х:"?
впрочем, ваше право ![]() а что за "может самостоятельно отключить"? вы имеете ввиду подключенный скриптом диск? если да, гм.. а не проблемы ли это индейцев? что до "стартап" и "логон" опять же, первый выполняется как известно с правами системы, второй - пользователя. ./или я что то пропускаю? что касается распространения: опять же, гм.. а ГП распространяется на что? на группу (требуемую) компьютеров? впрочем, опять же ваше.. ========================================================================== ' ' VBScript Source File ' ' NAME: MapDrivesInGroup.vbs ' ' COMMENT: Подключение сетевых дисков на основе групп с записью ошибок в EventLog ' '========================================================================== Option Explicit 'On Error Resume Next Dim WshShell, WshNetwork Dim strUserDN, objSysInfo, GroupObj, UserGroups, UserObj UserGroups="" Set WshShell = WScript.CreateObject("WScript.Shell") 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("Domain Admins") then MapDrv "Z:", "\\SRV\SUPPORT$" end if if InGroup("1C Users") then MapDrv "W:", "\\SRV\Base" end if MapDrv "L:", "\\SRV\Users\" & WshShell.ExpandEnvironmentStrings("%USERNAME%") '========================================================================== ' ' Function MapDrv(DrvLet, UNCPath) ' ' DrvLet - Буква устройства ' UNCPath - Сетевой путь ' ' COMMENT: Подключение сетевых дисков с записью ошибок в EventLog ' '========================================================================== Function MapDrv(DrvLet, UNCPath) Dim WshNetwork,objFSO ' Object variable Dim Msg Set WshNetwork = WScript.CreateObject("WScript.Network") Set objFSO = CreateObject("Scripting.FileSystemObject") On Error Resume Next If objFSO.DriveExists(DrvLet) Then WshNetwork.RemoveNetworkDrive DrvLet End If 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 '========================================================================== ' ' Function InGroup(strGroup) ' ' strGroup - группа, принадлежность к которой проверяем ' ' COMMENT: проверка принадлежности пользователя к группе ' '========================================================================== Function InGroup(strGroup) InGroup=False If InStr(UserGroups,"[CN=" & strGroup & "]") Then InGroup=True End If End Functio |
------- Отправлено: 23:49, 13-09-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1114
|
Профиль | Отправить PM | Цитировать Цитата:
Прилепил наспех из примера. Изменил код в первом сообщении, чтобы не смущать народ Цитата:
Смотрите в аттачменте. Ругательное окно, появляющееся на экране, возникает в результате попытки пользователя отключить диск. Хотя сам диск (внимание!) оказывается благополучно подключенным. При открытии диска Т: он показывает содержимое сетевого диска. По 2-му вопросу хочу добавить пояснения. Суть в том, что можно ,конечно, создать OU. Перетащить доменные компьютеры в этот OU. И назначить политику для компьютеров , входящих в данный OU ,прописав в политике запуск какого-нибудь скрипта. Хотелось бы иметь возможность размещения компьютеров домена в разных OU (например, для запуска разных скриптов) Есть ли возможность разместить компьютеры домена в разных OU или это бессмыслица ? |
||
------- Последний раз редактировалось XPurple, 14-09-2006 в 11:15. Отправлено: 06:16, 14-09-2006 | #3 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать 1. Если Вы подключаете диски из-под учетной записи компьютера, тогда они подключаются, но недоступны компьютеру, отчего может возникнуть такое собщение. Повторно Вы обращаетесь к нему уже с правами пользователя, поэтому они доступны. Хотя, У меня такая фигня (диски с красными крестами на w2kws) бывают, даже если подключение происходит из под пользователя. Правда, не напрягает, поскольку на самом деле они доступны, просто обман зрения.
2. Разные контейнеры для компьютеров- мне нравится. У меня есть принт-серверы, stayaloneсерверы, рабочие станции, специальные группы на два-три компьютера, для каждой свои политики, в основном для управления службами и устройствами. То есть в группе рабочих станций, например, отключено всё (службы, дисководы и т.д.). |
------- Отправлено: 17:50, 14-09-2006 | #4 |
Ветеран Сообщения: 688
|
Профиль | Отправить PM | Цитировать Цитата:
![]() по поводу аттача: имхо, все уже сказано.. Цитата:
ваше право, все дело только во вкусе, удобстве и наглядности). А ГП ведь можно распространять и на несколько групп равно как и к группе применять несколько ГП. не так ли? |
|||
------- Последний раз редактировалось Fighter, 14-09-2006 в 23:38. Отправлено: 21:33, 14-09-2006 | #5 |
![]() Ветеран Сообщения: 1114
|
Профиль | Отправить PM | Цитировать Цитата:
Про несколько политик на 1 группу(OU) я что-то не подумал. Надо будет попробовать. Цитата:
![]() Меня давно мучает вопрос (из серии боялись, но очень хотелось спросить) - для чего предназначена возможность включения в группы пользователей - компьютеров. Смысла то в этом нет. Политики распространяются все равно на уровне пользователей, а не компьютеров ? Или я что-то упустил? Цитата:
Есть такой сюжет в ералаше, где один ученик объясняет другому, что параллельные прямые не пересекаются. После 2 часов объяснений один из учеников наконец сдается и соглашается, что понял, что параллельные прямые не пересекаются. Но остался невысненным для него еще один вопрос: почему именно они не пересекаются. Надеюсь, что я не похож на этого въедливого ученика ![]() |
|||
Последний раз редактировалось XPurple, 15-09-2006 в 06:51. Отправлено: 06:21, 15-09-2006 | #6 |
Ветеран Сообщения: 4900
|
Профиль | Сайт | Отправить PM | Цитировать Цитата:
Цитата:
|
||
------- Отправлено: 11:27, 15-09-2006 | #7 |
![]() Ветеран Сообщения: 1114
|
Профиль | Отправить PM | Цитировать monkkey
Проверим Немного усовершенствовал код, представленный в первом сообщении. Может, кому-нибудь еще пригодится. Const CheckGroup = "cn=бухгалтерия" Const ConnectShare="\\server\share" Const MapNetDisk="T:" On error resume next 'На всякий случай :) Set wshNetwork = CreateObject("WScript.Network") set fs=CreateObject("Scripting.FileSystemObject") Set ADSysInfo = CreateObject("ADSystemInfo") Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName) if isArray(CurrentUser.MemberOf) then numGroups = UBound(CurrentUser.MemberOf)+1 else if CurrentUser.MemberOf<>"" then numGroups=1 end if end if select case numGroups case 0 strGroups = "Нет группы" case 1 strGroups = LCase(CurrentUser.MemberOf) case else strGroups = LCase(Join(CurrentUser.MemberOf)) end select if InStr(strGroups, CheckGroup) And fs.DriveExists(MapNetDisk) then wshNetwork.RemoveNetworkDrive MapNetDisk, true, true end if If InStr(strGroups, CheckGroup) And fs.FolderExists(ConnectShare) Then wshNetwork.MapNetworkDrive MapNetDisk,ConnectShare,true End If |
Последний раз редактировалось XPurple, 15-09-2006 в 13:24. Отправлено: 11:56, 15-09-2006 | #8 |
Ветеран Сообщения: 688
|
Профиль | Отправить PM | Цитировать Надеюсь, что я не похож на этого въедливого ученика
фигурально - нет, а что до буквально.. как знать, как знать ![]() теперь по сути: имхо, все дело вот в чем, скрипт запускаемый из секции "стартап" отрабатывается как уже упоминали, с правами системы (успешно отрабатывается) далее, пользователь обращаясь к данному ресурсу/ярлыку не обладая привилегиями с которыми производилось подключение проходит повторную проверку идентификатора на что получает сооттв. системную ошибку 1219. и.. продолжает работать используя права системы с которыми было создано подключения, и имеет доступ к ресурсу соотв. проходя проверку со своими и кач-ве бонуса - "отключенный ресурс" в качестве аргумента: в сеансе User net use X:\\server\share /user:Accounts\User&&net use X:\\server\share /user:Accounts\User2 |
------- Отправлено: 20:15, 15-09-2006 | #9 |
Старожил Сообщения: 193
|
Профиль | Отправить PM | Цитировать XPurple
Насколько я понял, требуется уточнить - что значит "и на пользователей и на компьютеры". Я предполагаю, что Вы это и так знаете, просто не обращали внимания на процедуру логона, вернее включения компьютера, вернее и того и другого. 1. Когда компьютер включается в домен, для него генерируется пароль, и при следующих входах в домен компьютер предъявляет его контроллеру, как и любой доугой участник безопасности, соответственно он тоже входит в домен, аналогично пользователю. Он также имеет определенные права в домене, как и любой другой его участник. 2. В политиках имеется два раздела - политики компьютера и политики пользователя, каждая из которых отрабатывается при входе в домен соответствующего члена домена. 3. Даже если мы в один контейнер поместим и пользователя и компьютер, каждый из них возьмет из политики свою часть. Необходимо четко понимать, что применение политики происходит на целевом компьютере или на целевом компьютере на профиле для конкретного пользователя, входящего в домен и для этого сеанса. То есть, компьютер при логоне щемится в NETLOGON, читает там свою политику и делает как сказано. При входе пользователя он (пользоваетль) также ломится в NETLOOGON и читает-применяет свою политику. 4. Поэтому в политике и есть два раздела, каждый из которых служит разным целям. И если Вы хотите назначить диски пользователям, то назначайте их в разделе, предназначенном пользователям. |
------- Отправлено: 16:29, 16-09-2006 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Подключение сетевых дисков у пользователей AD | davzom | Microsoft Windows NT/2000/2003 | 35 | 30-05-2013 07:53 | |
Подключение сетевых дисков | dinamitbrein | Сетевые технологии | 6 | 05-07-2012 16:33 | |
Любой язык - Подключение сетевых дисков | YDen | Скриптовые языки администрирования Windows | 12 | 01-03-2011 16:53 | |
Подключение сетевых дисков (маппинг) | ss777 | Microsoft Windows NT/2000/2003 | 1 | 25-08-2008 08:55 | |
подключение сетевых дисков у пользоватетей AD | e v g e n | Microsoft Windows NT/2000/2003 | 2 | 10-12-2007 11:21 |
|