none
Alterar permissao de pastas home via script RRS feed

  • Pergunta

  •  

    Ola pessoal...

    Eu trabalho num Centro Universitário e estou com o seguinte problema:

    O sistema de gestão esta integrado com o AD, criando usuários e atualizando os campus dos mesmos.

    O problema é na criação do "homeDirectory", já criei um script para criação das pastas, mas falta a questão da permissão do usuário. Esse processo tem que ser automatizado

    Eu já utilizei o xcacls, mas como um arquivo .bat, será que ele pode ser utilizado dentro de um arquivo vbs? Como?

    Vou por o exemplo do código que consulta no AD os usuarios, verifica se existe a pasta homeDirectory, se a pasta nao existe ele cria. Mas o usuario fica sem acesso ao seu home pois ele nao tem permissao. Se alguem tiver alguma solução mande ai...

    Obrigado e aguardo.

    ________________________

    Option Explicit

    Dim objOU, objUser, objRootDSE

    Dim strOU, strHomeAtual, strLogin, strhomedir

    Dim numTotal

     

    Function CheckFolderExists(sFolderName)

                Dim FileSystemObject

                Set FileSystemObject = CreateObject("Scripting.FileSystemObject")

     

                If (FileSystemObject.FolderExists(sFolderName)) Then

                            CheckFolderExists = True

                Else

                            CheckFolderExists = False

                End If

     

                Set FileSystemObject = Nothing

     

    End Function

     

    Function CreateFolder(strlogin)

     

       Dim selecionar_objeto, criar_pasta

     

       Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")

     

       Set criar_pasta = selecionar_objeto.CreateFolder(strhomedir)

     

       CreateFolder = criar_pasta.Path

     

     

    End Function

     

     

    Set objRootDSE = GetObject("LDAP://RootDSE")

                strOU = "OU=teste,OU=Usuarios," & objRootDSE.Get("DefaultNamingContext")

     

    set objOU = GetObject("LDAP://" & strOU )

                numTotal = 0

                strHomeAtual = ""

     

    For each objUser in objOU

     

    If objUser.class="user" Then

       strLogin = objUser.Get("sAMAccountName")

       strhomedir = objUser.Get("homeDirectory")

     

                If CheckFolderExists(strhomedir) Then

                            WScript.Echo "A pasta " & strhomedir & " já existe!!!"

                                                              

                Else

                            objUser.Put "scriptPath", " "

                            objUser.Put "homeDirectory", strhomedir

                            objUser.Put "homeDrive", "z:"

                            CreateFolder(strlogin)

                            numTotal = numTotal +1

               

                End if

     

                End If

     

    next

     

    WScript.Echo "( " & numTotal & " ) usuários alterados"

    WScript.Quit

     

    terça-feira, 5 de agosto de 2008 15:58

Respostas

  • Consegui !!!!!

    O vbs pesquisa no AD o HomeDirectoy do usuario, verifica se existe a pasta, se não existe ele cria a pasta e depois aplica  as permissoes.

     

    Para quem for utilizar o vbs, basta alterar a variavel strOU  de acordo com sua estrutura.

    ___________________

    Option Explicit
    Dim objOU, objUser, objRootDSE
    Dim strOU, strLogin, strhomedir
    Dim numTotal

    Function CheckFolderExists(sFolderName)
     Dim FileSystemObject
     Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
     If (FileSystemObject.FolderExists(sFolderName)) Then
      CheckFolderExists = True
     Else
      CheckFolderExists = False
     End If
     Set FileSystemObject = Nothing
    End Function

    Function CreateFolder()
       Dim selecionar_objeto, criar_pasta
       Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")
       Set criar_pasta = selecionar_objeto.CreateFolder(strhomedir)
       CreateFolder = criar_pasta.Path
    End Function

    Function PermissaoPasta()
     dim objShell, foi
     Set objShell = CreateObject("WScript.Shell")
     foi = "xcacls " & strhomedir & " /g ""Domain Admins"":f " & strLogin & ":f system:f administradores:f /y"
     objShell.Run(foi)
    End Function

    Set objRootDSE = GetObject("LDAP://RootDSE")
     strOU = "OU=Academico,OU=Usuarios," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
     numTotal = 0

    For each objUser in objOU
    If objUser.class="user" Then
       strLogin = objUser.Get("sAMAccountName")
       strhomedir = objUser.Get("homeDirectory")
     If CheckFolderExists(strhomedir) Then  
      Else
       CreateFolder()
       PermissaoPasta()
       numTotal = numTotal +1
     End if
    End If

    next

    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

    quarta-feira, 6 de agosto de 2008 16:07

Todas as Respostas

  • Alexandre,

     

    Estou movendo para a área correta.

     

    Abraço

    terça-feira, 5 de agosto de 2008 16:29
  • Consegui !!!!!

    O vbs pesquisa no AD o HomeDirectoy do usuario, verifica se existe a pasta, se não existe ele cria a pasta e depois aplica  as permissoes.

     

    Para quem for utilizar o vbs, basta alterar a variavel strOU  de acordo com sua estrutura.

    ___________________

    Option Explicit
    Dim objOU, objUser, objRootDSE
    Dim strOU, strLogin, strhomedir
    Dim numTotal

    Function CheckFolderExists(sFolderName)
     Dim FileSystemObject
     Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
     If (FileSystemObject.FolderExists(sFolderName)) Then
      CheckFolderExists = True
     Else
      CheckFolderExists = False
     End If
     Set FileSystemObject = Nothing
    End Function

    Function CreateFolder()
       Dim selecionar_objeto, criar_pasta
       Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")
       Set criar_pasta = selecionar_objeto.CreateFolder(strhomedir)
       CreateFolder = criar_pasta.Path
    End Function

    Function PermissaoPasta()
     dim objShell, foi
     Set objShell = CreateObject("WScript.Shell")
     foi = "xcacls " & strhomedir & " /g ""Domain Admins"":f " & strLogin & ":f system:f administradores:f /y"
     objShell.Run(foi)
    End Function

    Set objRootDSE = GetObject("LDAP://RootDSE")
     strOU = "OU=Academico,OU=Usuarios," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
     numTotal = 0

    For each objUser in objOU
    If objUser.class="user" Then
       strLogin = objUser.Get("sAMAccountName")
       strhomedir = objUser.Get("homeDirectory")
     If CheckFolderExists(strhomedir) Then  
      Else
       CreateFolder()
       PermissaoPasta()
       numTotal = numTotal +1
     End if
    End If

    next

    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

    quarta-feira, 6 de agosto de 2008 16:07