Любой язык - Подключение сетевых дисков

Ответить
 • Просмотры: 1
Аватара пользователя
YDen

Любой язык - Подключение сетевых дисков

Сообщение 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



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



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



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



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



Спасибо
Аватара пользователя
amel27

Re: Любой язык - Подключение сетевых дисков

Сообщение amel27 »

Цитата YDen:



xcacls \\server2\Shared_folder$\%username% /t /c /g Domain\%username%:c /y

rem назначаем для пользователя на папку разрешения Change
Любой язык - Подключение сетевых дисков




а не проще дать нужные права на корень учетке "CREATOR OWNER"?.. тогда пользователь при создании будет сразу получать нужные права на свою папку
Аватара пользователя
NiOl

Re: Любой язык - Подключение сетевых дисков

Сообщение NiOl »

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



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



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

Re: Любой язык - Подключение сетевых дисков

Сообщение alecsandrb »

Попробуй проверить такой код



Код:

Код: Выделить всё

  
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

Re: Любой язык - Подключение сетевых дисков

Сообщение nvhost »

пишет требуется objNetwork, при исполнении последнего скрипта,как быть?
Аватара пользователя
nvhost

Re: Любой язык - Подключение сетевых дисков

Сообщение nvhost »

Код:

Код: Выделить всё

Set objWshNetwork = CreateObject( "WScript.Network" )
UsersFolderName = ucase((objWshNetwork.UserName))
…
Аватара пользователя
nvhost

Re: Любой язык - Подключение сетевых дисков

Сообщение nvhost »

а как создать папку пользователя от имени админа?Надо сделать так чтобы другие юзеры не могли попасть в папку, а то при создании userfolder берет права родителя
Аватара пользователя
nvhost

Re: Любой язык - Подключение сетевых дисков

Сообщение nvhost »

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

Re: Любой язык - Подключение сетевых дисков

Сообщение nvhost »

впихнул,но ни каких изменений не увидел......может вы меня не так поняли, есть папка users есть два пользователя user1 и user2 права на папку users у пользователей домена стоит,полный доступ, иначе с ограниченными правами при выполнении скрипта вылазиет ошибка,а надо чтоб в users создалась папка user1 и пользователь имел права только на эту папку,ни в папку users ни в папку user2 пользователь user1 не мог войти
Ответить

Вернуться в «Скриптовые языки администрирования Windows»