Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Подключение сетевых дисков через .vbs

Ответить
Настройки темы
Подключение сетевых дисков через .vbs

Аватара для XPurple

Ветеран


Сообщения: 1114
Благодарности: 5

Профиль | Отправить PM | Цитировать


Изменения
Автор: XPurple
Дата: 14-09-2006
Есть скрипт для подключения сетевых дисков.
Текст 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
Если запускаю этот скрипт из секции logon, то происходит подключение диска, который пользователь во время сеанса может самостоятельно отключить.
Если запустить этот же скрипт из секции Startup, то происходит подключение диска, который система помечает как отключенный, но тем не менее ресурс остается подключенным.

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

Вопрос 1. Если это так и задумано, то кто может объяснить природу такого поведения подключаемых дисков.
Особенно интересует 2 случай (неотключаемый диск).
Вопрос 2. Как распространить скрипт ,запускаемый из секции Startup,- для группы компьютеров (не для всех компьютеров), являющихся членами домена.

-------
Кто не задает вопросы - тот не получает ответы


Отправлено: 14:55, 13-09-2006

 

Аватара для Fighter

Ветеран


Сообщения: 688
Благодарности: 14

Профиль | Отправить 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



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для XPurple

Ветеран


Сообщения: 1114
Благодарности: 5

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg disk-startup1.jpg
(137.0 Kb, 70 просмотров)

Цитата:
подключаете "W:" а проверку на наличие и удаление "Х:"?
Это описка, ежику понятно. Диск один и тот же, например Т:
Прилепил наспех из примера. Изменил код в первом сообщении, чтобы не смущать народ

Цитата:
"? вы имеете ввиду подключенный скриптом диск?
если да, гм.. а не проблемы ли это индейцев?
Прицепил для наглядности картинку, что происходит при использовании этого скрипта из секции Startup (для компьютеров)
Смотрите в аттачменте.

Ругательное окно, появляющееся на экране, возникает в результате попытки пользователя отключить диск. Хотя сам диск (внимание!) оказывается благополучно подключенным. При открытии диска Т: он показывает содержимое сетевого диска.

По 2-му вопросу хочу добавить пояснения.
Суть в том, что можно ,конечно, создать OU. Перетащить доменные компьютеры в этот OU.
И назначить политику для компьютеров , входящих в данный OU ,прописав в политике запуск какого-нибудь скрипта.
Хотелось бы иметь возможность размещения компьютеров домена в разных OU (например, для запуска разных скриптов)
Есть ли возможность разместить компьютеры домена в разных OU или это бессмыслица ?

-------
Кто не задает вопросы - тот не получает ответы


Последний раз редактировалось XPurple, 14-09-2006 в 11:15.


Отправлено: 06:16, 14-09-2006 | #3


Аватара для Goblin34

Старожил


Сообщения: 193
Благодарности: 5

Профиль | Отправить PM | Цитировать


1. Если Вы подключаете диски из-под учетной записи компьютера, тогда они подключаются, но недоступны компьютеру, отчего может возникнуть такое собщение. Повторно Вы обращаетесь к нему уже с правами пользователя, поэтому они доступны. Хотя, У меня такая фигня (диски с красными крестами на w2kws) бывают, даже если подключение происходит из под пользователя. Правда, не напрягает, поскольку на самом деле они доступны, просто обман зрения.
2. Разные контейнеры для компьютеров- мне нравится. У меня есть принт-серверы, stayaloneсерверы, рабочие станции, специальные группы на два-три компьютера, для каждой свои политики, в основном для управления службами и устройствами. То есть в группе рабочих станций, например, отключено всё (службы, дисководы и т.д.).

-------
Верить никому нельзя. Мне можно.


Отправлено: 17:50, 14-09-2006 | #4


Аватара для Fighter

Ветеран


Сообщения: 688
Благодарности: 14

Профиль | Отправить PM | Цитировать


Цитата:
подключаете "W:" а проверку на наличие и удаление "Х:"?
Это описка, ежику понятно. Диск один и тот же, например Т:
это была шутка, ежику понятно
по поводу аттача: имхо, все уже сказано..
Цитата:
Есть ли возможность разместить компьютеры домена в разных OU или это бессмыслица ?
групируйте компьютеры треб. группами (хоть в разных ОU, хоть в одном
ваше право, все дело только во вкусе, удобстве и наглядности). А ГП ведь можно распространять и на несколько групп
равно как и к группе применять несколько ГП. не так ли?

-------
жить!!!


Последний раз редактировалось Fighter, 14-09-2006 в 23:38.


Отправлено: 21:33, 14-09-2006 | #5


Аватара для XPurple

Ветеран


Сообщения: 1114
Благодарности: 5

Профиль | Отправить PM | Цитировать


Цитата:
А ГП ведь можно распространять и на несколько групп
Только, к сожалению, один и тот же компьютер, нельзя разместить в разных группах (OU), чтобы на него распространялись несколько политик.
Про несколько политик на 1 группу(OU) я что-то не подумал. Надо будет попробовать.
Цитата:
не так ли?
Так ли . Времени нет,чтобы сесть, подумать и разложить все по полочкам.

Меня давно мучает вопрос (из серии боялись, но очень хотелось спросить) - для чего предназначена возможность включения в группы пользователей - компьютеров. Смысла то в этом нет. Политики распространяются все равно на уровне пользователей, а не компьютеров ?
Или я что-то упустил?

Цитата:
1. Если Вы подключаете диски из-под учетной записи компьютера, тогда они подключаются, но недоступны компьютеру, отчего может возникнуть такое собщение. Повторно Вы обращаетесь к нему уже с правами пользователя, поэтому они доступны. Хотя, У меня такая фигня (диски с красными крестами на w2kws) бывают, даже если подключение происходит из под пользователя. Правда, не напрягает, поскольку на самом деле они доступны, просто обман зрения.
По поводу подключения диска без проверки прав пользователя еще как-то можно согласиться. Но почему после загрузки сетевой диск не меняет своего состояния на "подключенный" и не дает с собой ничего делать, если у пользователя есть права на данный ресурс ?
Есть такой сюжет в ералаше, где один ученик объясняет другому, что параллельные прямые не пересекаются. После 2 часов объяснений один из учеников наконец сдается и соглашается, что понял, что параллельные прямые не пересекаются. Но остался невысненным для него еще один вопрос: почему именно они не пересекаются.
Надеюсь, что я не похож на этого въедливого ученика .

Последний раз редактировалось XPurple, 15-09-2006 в 06:51.


Отправлено: 06:21, 15-09-2006 | #6


Ветеран


Сообщения: 4904
Благодарности: 496

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
для чего предназначена возможность включения в группы пользователей - компьютеров
У политики есть два уровня - для компьютеров и для пользователей...

Цитата:
Политики распространяются все равно на уровне пользователей, а не компьютеров ?
И на то, и на другое.

-------
Если сообщение оказалось полезным, нажмите, пожалуйста, соответствующую кнопку.


Отправлено: 11:27, 15-09-2006 | #7


Аватара для XPurple

Ветеран


Сообщения: 1114
Благодарности: 5

Профиль | Отправить 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


Аватара для Fighter

Ветеран


Сообщения: 688
Благодарности: 14

Профиль | Отправить 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


Аватара для Goblin34

Старожил


Сообщения: 193
Благодарности: 5

Профиль | Отправить PM | Цитировать


XPurple
Насколько я понял, требуется уточнить - что значит "и на пользователей и на компьютеры". Я предполагаю, что Вы это и так знаете, просто не обращали внимания на процедуру логона, вернее включения компьютера, вернее и того и другого.
1. Когда компьютер включается в домен, для него генерируется пароль, и при следующих входах в домен компьютер предъявляет его контроллеру, как и любой доугой участник безопасности, соответственно он тоже входит в домен, аналогично пользователю. Он также имеет определенные права в домене, как и любой другой его участник.
2. В политиках имеется два раздела - политики компьютера и политики пользователя, каждая из которых отрабатывается при входе в домен соответствующего члена домена.
3. Даже если мы в один контейнер поместим и пользователя и компьютер, каждый из них возьмет из политики свою часть. Необходимо четко понимать, что применение политики происходит на целевом компьютере или на целевом компьютере на профиле для конкретного пользователя, входящего в домен и для этого сеанса. То есть, компьютер при логоне щемится в NETLOGON, читает там свою политику и делает как сказано. При входе пользователя он (пользоваетль) также ломится в NETLOOGON и читает-применяет свою политику.
4. Поэтому в политике и есть два раздела, каждый из которых служит разным целям. И если Вы хотите назначить диски пользователям, то назначайте их в разделе, предназначенном пользователям.

-------
Верить никому нельзя. Мне можно.


Отправлено: 16:29, 16-09-2006 | #10



Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Подключение сетевых дисков через .vbs

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Подключение сетевых дисков у пользователей 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




 
Переход