Любой язык - Подключение сетевых дисков
-
YDen
Любой язык - Подключение сетевых дисков
Здравствуйте!
Есть батник:
---------------------------------------------------------------------------------
@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
---------------------------------------------------------------------------------
Это скрипт мне подсказали на форуме - дает имя сетевому диску.
Хочу из скрипта и батника сделать один скрипт или батник делающий следующее: создает общие сетевые диски и дает имя им, и создает персональные диски, закрепляет права пользователя и дает имя этому диску.
Подскажите пожалуйста код.
Спасибо
Есть батник:
---------------------------------------------------------------------------------
@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
Re: Любой язык - Подключение сетевых дисков
Цитата YDen:
xcacls \\server2\Shared_folder$\%username% /t /c /g Domain\%username%:c /y
rem назначаем для пользователя на папку разрешения Change
а не проще дать нужные права на корень учетке "CREATOR OWNER"?.. тогда пользователь при создании будет сразу получать нужные права на свою папку
xcacls \\server2\Shared_folder$\%username% /t /c /g Domain\%username%:c /y
rem назначаем для пользователя на папку разрешения Change
Любой язык - Подключение сетевых дисков
а не проще дать нужные права на корень учетке "CREATOR OWNER"?.. тогда пользователь при создании будет сразу получать нужные права на свою папку
-
NiOl
Re: Любой язык - Подключение сетевых дисков
1. Я недостаточно внимательно посмотрел приведенный "alecsandrb" скрипт, добавлять пользователя туда не надо, он лежит в переменной "UsersFolderName". Можно заменить права изменения на полные (:c заменить на :f).
2. Нужно посмотреть на готовую строку с xcacls после раскрытия переменных - возможно где-то пропущен пробел (или наоборот лишний) - просмотрите содержимое переменной StrCmdRightUsers перед вызовом CMD.
3. Попробуйте выполнить указанную строку вручную - какие ошибки будут...
2. Нужно посмотреть на готовую строку с xcacls после раскрытия переменных - возможно где-то пропущен пробел (или наоборот лишний) - просмотрите содержимое переменной StrCmdRightUsers перед вызовом CMD.
3. Попробуйте выполнить указанную строку вручную - какие ошибки будут...
-
alecsandrb
Re: Любой язык - Подключение сетевых дисков
Попробуй проверить такой код
Код:
xcacls должен лежать в той же папке откуда скрипт запускаешь
Код:
Код: Выделить всё
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 Subxcacls должен лежать в той же папке откуда скрипт запускаешь
-
nvhost
Re: Любой язык - Подключение сетевых дисков
пишет требуется objNetwork, при исполнении последнего скрипта,как быть?
-
nvhost
Re: Любой язык - Подключение сетевых дисков
Код:
Код: Выделить всё
Set objWshNetwork = CreateObject( "WScript.Network" )
UsersFolderName = ucase((objWshNetwork.UserName))
…-
nvhost
Re: Любой язык - Подключение сетевых дисков
а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя
-
nvhost
Re: Любой язык - Подключение сетевых дисков
1.
Цитата nvhost:
а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя
Совершенно не знаю VB (и не очень спешу его знать
), но думаю достаточно в строке
Цитата alecsandrb:
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:
а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя
Любой язык - Подключение сетевых дисков
Совершенно не знаю VB (и не очень спешу его знать
), но думаю достаточно в строкеЦитата alecsandrb:
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
Re: Любой язык - Подключение сетевых дисков
впихнул,но ни каких изменений не увидел......может вы меня не так поняли, есть папка users есть два пользователя user1 и user2 права на папку users у пользователей домена стоит,полный доступ, иначе с ограниченными правами при выполнении скрипта вылазиет ошибка,а надо чтоб в users создалась папка user1 и пользователь имел права только на эту папку,ни в папку users ни в папку user2 пользователь user1 не мог войти