Тема: VBS: Скрипт создания папок на файловом сервере
Коллеги, прошу помощи. Возникла срочная потребность создать структуру папок на файловом сервере.
Структура: Персональные_папки
----------------------------------------Отдел (OU)
-----------------------------------------------Пользователь (DisplayName)
---------------------------------------------------------------Домашняя
---------------------------------------------------------------Публичная
Права на просмотр для всех пользователей домена на всё до папок "Домашняя" и "Публичная"
на папку "домашняя" права только для пользователя, для папки "Публичная" чтение\запись для всех, удаление только для пользователя.
Сразу признаюсь, что в программирование не силен. Искал решение на VBS. Нашел скрипт, прошу помочь доработать под задачу. Заранее благодарен.
On Error Resume Next
Dim strUser
Dim strOU
Dim strPath
Const OU = "OU=Пользователи"
Const ShareFolder = "D:\Share\Персональные_папки"
Set oShell = CreateObject("WScript.Shell")
Set WshShell = CreateObject("WScript.Shell")
Set FileSys = CreateObject("Scripting.FileSystemObject")
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOOBject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
strDNSDomain = objRootDSE.Get("defaultNamingContext")
strFilter = "(&(objectCategory=user))"
strQuery = "<LDAP://" & OU & "," & strDNSDomain & ">;" & strFilter & ";distinguishedName"
objCommand.CommandText = strQuery
Set objRecordSet = objCommand.Execute
Do Until objRecordSet.EOF
strDN = objRecordSet.Fields("distinguishedName")
Set objUser = GetObject("LDAP://" & strDN)
If objUser.AccountDisabled = False Then
strUser = objUser.Get("Displayname")
strOU = objUser.AdsPath
strOU = Right(strOU, Len(strOU) - InStr(strOU, "OU") - 2)
strOU = Left(strOU, InStr(strOU, ",") - 1)
Err.Clear
Set objGroup = GetObject("LDAP://CN=" & strOU & ",OU=Groups," & OU & "," & strDNSDomain)
If (Err.Number = "-2147016656") Then
Err.Clear
Set objOU = GetObject("LDAP://OU=Groups," & OU & "," & strDNSDomain)
Set objGroup = objOU.Create("Group", "CN=" & strOU)
objGroup.Put "sAMAccountName", strOU
objGroup.Put "description", strOU
objGroup.SetInfo
End If
objGroup.Add objUser.AdsPath
strPath = ShareFolder & "\" & strOU
If Not FileSys.FolderExists(strPath) Then
Call FileSys.CreateFolder(strPath)
Call FileSys.CreateFolder(strPath & "\Home")
Call FileSys.CreateFolder(strPath & "\Pub")
Call WshShell.Run("cacls " & strPath & "\Pub" & " /e /g " & strOU & ":C", HIDE_WINDOW, WAIT_ON_RETURN)
End If
strPath = strPath & "\Home\" & strUser
If Not FileSys.FolderExists(strPath) Then
Call FileSys.CreateFolder(strPath)
Call WshShell.Run("cacls " & strPath & " /e /g " & strUser & ":C", HIDE_WINDOW, WAIT_ON_RETURN)
End If
End If
objRecordSet.MoveNext
Loop
