PDA

Показать полную графическую версию : Подключение сетевых дисков


YDen
20-11-2009, 14:33
Здравствуйте!
Есть батник:
---------------------------------------------------------------------------------
@echo off

net time /domain:mou102.local /set /y

rem net use m: \\server2\Metodika$ /persistent:no
rem net use r: \\server2\Biblioteka$ /persistent:no


rem if %username%==borodulya net use s: \\Server2\Shared_folder$\school\erudit /persistent:no



rem подключение пользовательского диска

net use u: /delete - это типа сначал удаляем существующий диск


if exist \\server2\Shared_folder$\%username% goto label
rem проверяем наличие папки, если есть такая папка, то идем на ок,
rem если нету папки, идем дальше

mkdir \\server2\Shared_folder$\%username%
rem создаем папку c таким же именем, с каким пользователь входит в сеть

xcacls \\server2\Shared_folder$\%username% /t /c /g Domain\%username%:c /y
rem назначаем для пользователя на папку разрешения Change

:label
net use u: \\server2\Shared_folder$\%username% /persistent:no
rem подключаем папку как сетевой диск U
---------------------------------------------------------------------------------

Батник подключает общие и персональный сетевые диски.

Есть скрипт:

---------------------------------------------------------------------------------

On Error Resume Next

Set objWshNetwork = CreateObject( "WScript.Network" )
Set objShell = CreateObject("Shell.Application")


MapDrive "U:", "\\server2\Shared_folder\school\%username%", "Пользовательский"

MapDrive "S:", "\\server2\Shared_folder\school\school", "Общий"

Sub MapDrive(strDrive, strPath, strName)
On Error Resume Next
objWshNetwork.RemoveNetworkDrive strDrive, vbTrue, vbTrue
objWshNetwork.MapNetworkDrive strDrive, strPath, vbTrue
objShell.NameSpace(strDrive).Self.Name = strName
End Sub

---------------------------------------------------------------------------------

Это скрипт мне подсказали на форуме - дает имя сетевому диску.

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

Подскажите пожалуйста код.

Спасибо

amel27
23-11-2009, 10:43
xcacls \\server2\Shared_folder$\%username% /t /c /g Domain\%username%:c /y
rem назначаем для пользователя на папку разрешения Change »
а не проще дать нужные права на корень учетке "CREATOR OWNER"?.. тогда пользователь при создании будет сразу получать нужные права на свою папку

alecsandrb
30-11-2009, 07:12
Попробуй проверить такой код


Set objWshNetwork = CreateObject( "WScript.Network" )
UsersFolderName = ucase((objNetwork.UserName))

' создаем папку пользователя, проверяя если она есть то идем дальше
FolderUser = "\\server2\Shared_folder\school\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
' если папки нет то создаем ее и назначаем права
Set objFolder1 = objFld1.CreateFolder(FolderUser)
' формируем строку с назначением прав на личную папку
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":с /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
End If


Set objShell = CreateObject("Shell.Application")

MapDrive "U:", FolderUser, "Пользовательский"
MapDrive "S:", "\\server2\Shared_folder\school\school", "Общий"

Sub MapDrive(strDrive, strPath, strName)
On Error Resume Next
objWshNetwork.RemoveNetworkDrive strDrive, vbTrue, vbTrue
objWshNetwork.MapNetworkDrive strDrive, strPath, vbTrue
objShell.NameSpace(strDrive).Self.Name = strName
End Sub




xcacls должен лежать в той же папке откуда скрипт запускаешь

nvhost
27-07-2010, 06:37
пишет требуется objNetwork, при исполнении последнего скрипта,как быть?

Iska
27-07-2010, 14:25
Set objWshNetwork = CreateObject( "WScript.Network" )
UsersFolderName = ucase((objWshNetwork.UserName))

nvhost
28-07-2010, 06:12
понял,щас исправлю

nvhost
28-07-2010, 10:00
а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя

nvhost
30-07-2010, 13:30
Ребят подскажите как это сделать,никто не знает???Скрипт почему то исполняется только при входе в терминал......как сделать чтоб при входе в домен?

NiOl
30-07-2010, 15:29
1. а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя »
Совершенно не знаю VB (и не очень спешу его знать ;) ), но думаю достаточно в строке
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":с /y " »
надо добавить User:F (можно впихнуть между "доменными админами" и "системой"), правда из соображений безопасности "доменных админов" тут быть вообще не должно, а должна с разрешением по чтению быть учетка, которой делигированы права на бэкап пользовательских данных.
2. Имя учетки пользователя (здесь указана как User) можно взять из переменной %UserName%, особенно если скрипт запускается при входе пользователя в систему - в домене он (скрипт) должен прописываться в GPO не в "Computer configuration => Windows settings => Scripts", а в "User configuration => Windows settings => Scripts"

nvhost
31-07-2010, 08:30
впихнул,но ни каких изменений не увидел......может вы меня не так поняли, есть папка users есть два пользователя user1 и user2 права на папку users у пользователей домена стоит,полный доступ, иначе с ограниченными правами при выполнении скрипта вылазиет ошибка,а надо чтоб в users создалась папка user1 и пользователь имел права только на эту папку,ни в папку users ни в папку user2 пользователь user1 не мог войти

NiOl
02-08-2010, 15:04
1. Я недостаточно внимательно посмотрел приведенный "alecsandrb" скрипт, добавлять пользователя туда не надо, он лежит в переменной "UsersFolderName". Можно заменить права изменения на полные (:c заменить на :f).

2. Нужно посмотреть на готовую строку с xcacls после раскрытия переменных - возможно где-то пропущен пробел (или наоборот лишний) - просмотрите содержимое переменной StrCmdRightUsers перед вызовом CMD.

3. Попробуйте выполнить указанную строку вручную - какие ошибки будут...

atm_kzn
01-03-2011, 14:12
Добрый день.
Есть vbs скрипт для подключения сетевых дисков у пользователей.
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set wn = WScript.CreateObject("WScript.Network")
Set ap = CreateObject("Shell.Application")
if fs.DriveExists("Y:") then wn.RemoveNetworkDrive "Y:", true, true
wn.MapNetworkDrive "Y:", "\\server\share01", false, login, password
if fs.DriveExists("Z:") then wn.RemoveNetworkDrive "Z:", true, true
wn.MapNetworkDrive "Z:", "\\server\share02", false, login, password

Пробовал подключать таким образом диски на своём компе - всё отлично работает, попробовал запустить его для другой учётки на виртуальной тачке - появляется ошибка:
Сценарий: C:\mab.vbs
Строка: 5
Символ: 1
Ошибка: Сетевой пароль указан неверно
Код: 80070056
Источник: WSHNetwork.MapNetworkDrive
Если в командной строке выполнить:
net use "\\server\share" password /user:login
то после выполнения скрипт выполняется, после перезагрузки ситуация повторяется.
Сеть без домена, подключение идёт к шаре на Samba.

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

Petya V4sechkin
01-03-2011, 16:53
Пробовал подключать таким образом диски на своём компе - всё отлично работает, попробовал запустить его для другой учётки на виртуальной тачке - появляется ошибка
Можно сравнить разделы реестра:
HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0




© OSzone.net 2001-2012