Usuário com melhor resposta
Alterar permissao de pastas home via script

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
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 numTotalFunction 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 FunctionFunction CreateFolder()
Dim selecionar_objeto, criar_pasta
Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")
Set criar_pasta = selecionar_objeto.CreateFolder(strhomedir)
CreateFolder = criar_pasta.Path
End FunctionFunction 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 FunctionSet objRootDSE = GetObject("LDAP://RootDSE")
strOU = "OU=Academico,OU=Usuarios," & objRootDSE.Get("DefaultNamingContext")set objOU = GetObject("LDAP://" & strOU )
numTotal = 0For 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 Ifnext
WScript.Echo "( " & numTotal & " ) usuários alterados"
WScript.Quit
Todas as 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 numTotalFunction 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 FunctionFunction CreateFolder()
Dim selecionar_objeto, criar_pasta
Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")
Set criar_pasta = selecionar_objeto.CreateFolder(strhomedir)
CreateFolder = criar_pasta.Path
End FunctionFunction 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 FunctionSet objRootDSE = GetObject("LDAP://RootDSE")
strOU = "OU=Academico,OU=Usuarios," & objRootDSE.Get("DefaultNamingContext")set objOU = GetObject("LDAP://" & strOU )
numTotal = 0For 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 Ifnext
WScript.Echo "( " & numTotal & " ) usuários alterados"
WScript.Quit