Usuário com melhor resposta
Criar Pasta para Usuários em FIleServer.

Pergunta
-
Boa Boite.
Mais uma vez gostaria de agradecer a todos que apoiam o TechNet.
Estou com a seguinte necessidade:
Tenho um Ad com muitos usuários, e gostaria de criar um script para que crie uma pasta com o Nome de cada usuário do Ad em um caminho na rede \\sileserver\geral. Essa pasta não será a pasta hne do usuário, será apenas uma pasta na rede para ele. Gostaria tambem que esse script mapeasse para o usuário o diretório dele.
Isso é possivel? Qual seria o script, pois não sei ainda como criá-los e em que evento ele deverá ser acionado?
Me ajudem, pois é muito importante para o controle da Rede.
Obrigado.
Respostas
-
Olá Laércio, tudo bem ?
Primeiro marque o post caso tenha sido util.
Amigo uma dica troque a letra do mapeamento b: para qualquer outra, porque está letra é reservada para o SO, pode ser por isso que não está funcionando.
Segundo substitua esta linha:
objCommand.CommandText = _
"SELECT ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
Set objRecordSet = objCommand.Executepor esta e vê se funciona:
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://ou=xxxx,dc=xxxx,dc=xxxx' WHERE objectCategory='user' "
Set objRecordSet = objCommand.ExecuteAtt.
Leonardo Duarte
Todas as Respostas
-
Olá Laercio, blza ?
Bom para o seu caso iremos necessitar de 2 scritps. Um vai criar as pastas e outro o mapeamento, bom vamos lá.
1º - No seu servidor de arquivos crie uma pasta por exemplo c:\teste e dentro dela crie arquivo chamado users.txt dentro deste arquivo coloque os nomes dos seus usuários em cada linha, você também pode exportar seus usuários através do AD pelo menu action - export list. Criado o seu arquivo ele deve ficar desta forma como mostrado em abaixo, ou seja, cada usuário ficará em uma linha.
Users.txt
user1
user2
user3
2º - Depois de criado este arquivo vamos criar o script que vai ler o conteúdo deste arquivo e vai criar as pastas baseado neste arquivo, este script vamos salva-lo com .bat também dentro da pasta c:\teste.
Cria_pastas.bat
for /F %%i in (users.txt) do mkdir c:\geral\%%i
3º - Criado o arquivo cria_pastas.bat basta executa-lo e veremos a criação das pasta dentro do caminho c:\geral, ou seja este script vai criar todas as pastas baseando-se nos nomes que estão dentro do arquivo users.txt. No exemplo estamos executando este script no nosso servidor de arquivos.
Agora no seu DC (domain controller) vamos criar o outro script que vai mapear as pastas de acordo com os usuários e salva-lo na pasta netlogon ou de sua preferência, lembrando que esta pasta deve ser compartilhada.
Nome do script: mapeia.bat
Contéudo do Script:
net use x: \\nomedoseuservidor\geral\%username%
o comando net use ira mapear a pasta do usuário que está no servidor de arquivos, ou seja, ele vai procurar dentro da pasta geral aquilo que corresponda a variavel %username%.
4º - Agora você deve criar um GPO para aplicar o script mapeia.bat para os usuário quando eles fizerem logon, ou seja crie uma OU, mova os usuários para dentro desta OU e crie a GPO aplicando para o usuário e não para computador. Clicando em edit na guia Group Policy vc vai navegar até o caminho:
User Configuration - Windows Settings - Scripts (logon / logoff) - no nosso caso vamos escolher logon e basta adicionarmos o caminho onde está o script mapeia.bat.
\\dc\pastacompartilhada\mapeia.bat
Obs: Não esqueça de verificar as permissões no servidor de arquivos, verifique se os usuário tem as devidas permissões nas pastas e lembre-se é mais aconselhavel atribuir permissões aos grupos e não aos usuários.
Espero ter ajudado.
Leonardo Duarte (BH) - MCP / MCSA
Por favor marque este post caso ele tenha sido útil.
-
Boa Noite Eduardo
Obrigado pela dica!
Estou usando o script abaixo, mas ele esta criando pasta com todos os usuários do Ad, inclusive os inativos e usuários do IIS entre outros, gostaria de saber se existe a possibiidade de determianr qual OU que quero que seja buscado os usuários, tentei alterar o select mas não tive sucesso, tem algum dica?
on Error Resume Next
Dim oNet
bForce = "True"
bUpdateProfile = "True"
Set oNet = CreateObject("WScript.Network")oNet.RemoveNetworkDrive "b:", bForce, bUpdateProfile
oNet.MapNetworkDrive "b:", "\\localhost\Transferencia"Const ADS_SCOPE_SUBTREE = 2
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnectionobjCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREEobjCommand.CommandText = _
"SELECT ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirstDo Until objRecordSet.EOF
strPath = objRecordSet.Fields("AdsPath").Value
Set objuser = GetObject(strpath)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("b:\"&objuser.cn)
objRecordSet.MoveNextLoop
oNet.RemoveNetworkDrive "b:", bForce, bUpdateProfile
-
-
Olá Laércio, tudo bem ?
Primeiro marque o post caso tenha sido util.
Amigo uma dica troque a letra do mapeamento b: para qualquer outra, porque está letra é reservada para o SO, pode ser por isso que não está funcionando.
Segundo substitua esta linha:
objCommand.CommandText = _
"SELECT ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
Set objRecordSet = objCommand.Executepor esta e vê se funciona:
objCommand.CommandText = _
"SELECT Name FROM 'LDAP://ou=xxxx,dc=xxxx,dc=xxxx' WHERE objectCategory='user' "
Set objRecordSet = objCommand.ExecuteAtt.
Leonardo Duarte