none
((Script para Criar grupos de segurança no Active Directory)) RRS feed

  • Pergunta

  • Pessoal eu encontrei este script no site da Microsoft para criar grupos globais

    Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
    Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

    Set objOU = GetObject("LDAP://ou=HR,dc=NA,dc=fabrikam,dc=com")
    Set objGroup = objOU.Create("Group", "cn=HR-Employees")

    objGroup.Put "sAMAccountName", "HRStaff"
    objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or _
        ADS_GROUP_TYPE_SECURITY_ENABLED
    objGroup.SetInfo


    Mas eu gostaria que o script fizesse o seguinte
    perguntasse:

    1 - qual é o nome do grupo a ser criado com acesso leitura
    2 - Qual o nome do grupo a ser criado com acesso gravacao

    com estas informaçoes o script deveria criar os grupos com base nas variaveis informadas

     

    Abraço

     


    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    terça-feira, 28 de abril de 2009 18:18

Respostas

  • Ola Jesiel,

    Isso mesmo,

    Eu gostaria que este script de criação de grupos no Ad fosse integrado com um script de criação de pasta e liberação de acesso como voce fez no forum http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f


    A primeira parte do script criaria os grupos no Ad, basicamente dois grupos um para leitura e outro para gravação conforme estratégia AGP da Microsoft

    Eu gostaria que me abrisse uma tela perguntando qual o nome  do grupo de leitura a ser criado, depois qual o nome  do grupo de gravação a ser criado.

    na sequencia o  script criaria as pastas e  daria as permissões como foi feito no script http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f, só que neste caso a segunda parte  do script nao precisaria mais me perguntar qual o nome do grupo a ser adicionado nas acls, esta informaçào viria de uma variavel criada no primeiro script.

    Nao sei se ficou claro, o fato é que o primeiro scritp http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f ficou perfeito e ficaria excelente se conseguissemos integrar os tres objetivos: criação dos grupos, criação da pasta, e alteração das acls, baseado nos grupos criados.

    Abraço e obrigado a todos
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    • Marcado como Resposta Adriano Neiva terça-feira, 28 de abril de 2009 20:29
    terça-feira, 28 de abril de 2009 19:18
  • Olá,

    Adriano, segue abaixo um script, veja se te atende:




    Option Explicit
    on error resume next

    Dim objDSE, strDefaultDN, strDN, objContainer,objChild,objUser
    Dim strCaminho,strPasta,strGrupoLer,strGrupoMod,strGrupoFull
    Dim strFolder,WshShell,WshNetwork,objGroup

    Set objDSE = GetObject("LDAP://rootDSE")
    strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")

    strDN =     InputBox("Coloque o Distinguished Name do Objeto" & _
        vbCrLf & "(Exemplo: " & strDefaultDN & ")", , strDefaultDN)

    If strDN = "" Then WScript.Quit(1)       

    strGrupoLer = InputBox("Coloque o nome do Grupo para Permissão de Leitura" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoA" & ")", , "GrupoA")

    If strGrupoLer = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoLer,strDN

    strGrupoMod = InputBox("Coloque o nome do Grupo para Permissão de Modificar" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoB" & ")", , "GrupoB")

    If strGrupoMod = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoMod, strDN


    strCaminho = InputBox("Coloque o Caminho da Pasta" & _
        vbCrLf & "(Ex.:  " & "C:\pasta" & ")", , "C:\Pasta")

    If strCaminho = "" Then WScript.Quit(1)  

    strPasta = InputBox("Coloque o nome da Pasta" & _
        vbCrLf & "(Ex.:  " & "Pasta" & ")", , "Pasta")

    If strPasta= "" Then WScript.Quit(1)  

    Set strFolder = CreateObject("Scripting.FileSystemObject")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set WshShell=CreateObject("Wscript.Shell")

    If strFolder.FolderExists (strCaminho & "\" & strPasta) = False Then
       strFolder.CreateFolder (strCaminho & "\" & strPasta)
    End If


    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoLer  &":R"
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoMod  &":C"
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoFull  &":F"

    Function CreateGrupo(nome,strDN)

    Set objContainer = GetObject("LDAP://" & strDN)

    Set objGroup = objContainer.Create("Group", "cn="& nome)
    objGroup.put "name",nome
    objGroup.put "SamAccountName", nome
    objGroup.put "description",nome
    objGroup.setinfo

    End Function


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 28 de abril de 2009 20:06

Todas as Respostas

  • Olá Adriano,

    Não entendi sua dúvida...

    Você quer que abra uma tela para digitar o nome do grupo????

    Parecido com o outro script que criei pra você????

    Quando você fala: 1 - Qual é o nome do grupo a ser criado com acesso leitura??? O que quer dizer??? É para criar integrando ao script que fiz pra você???

    Até mais,

    Jesiel
    terça-feira, 28 de abril de 2009 18:32
  • Ola Jesiel,

    Isso mesmo,

    Eu gostaria que este script de criação de grupos no Ad fosse integrado com um script de criação de pasta e liberação de acesso como voce fez no forum http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f


    A primeira parte do script criaria os grupos no Ad, basicamente dois grupos um para leitura e outro para gravação conforme estratégia AGP da Microsoft

    Eu gostaria que me abrisse uma tela perguntando qual o nome  do grupo de leitura a ser criado, depois qual o nome  do grupo de gravação a ser criado.

    na sequencia o  script criaria as pastas e  daria as permissões como foi feito no script http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f, só que neste caso a segunda parte  do script nao precisaria mais me perguntar qual o nome do grupo a ser adicionado nas acls, esta informaçào viria de uma variavel criada no primeiro script.

    Nao sei se ficou claro, o fato é que o primeiro scritp http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/ad47e676-d562-480a-b24a-3fa0a15e0d2f ficou perfeito e ficaria excelente se conseguissemos integrar os tres objetivos: criação dos grupos, criação da pasta, e alteração das acls, baseado nos grupos criados.

    Abraço e obrigado a todos
    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    • Marcado como Resposta Adriano Neiva terça-feira, 28 de abril de 2009 20:29
    terça-feira, 28 de abril de 2009 19:18
  • Olá,

    Adriano, segue abaixo um script, veja se te atende:




    Option Explicit
    on error resume next

    Dim objDSE, strDefaultDN, strDN, objContainer,objChild,objUser
    Dim strCaminho,strPasta,strGrupoLer,strGrupoMod,strGrupoFull
    Dim strFolder,WshShell,WshNetwork,objGroup

    Set objDSE = GetObject("LDAP://rootDSE")
    strDefaultDN = "CN=Users," & objDSE.Get("defaultNamingContext")

    strDN =     InputBox("Coloque o Distinguished Name do Objeto" & _
        vbCrLf & "(Exemplo: " & strDefaultDN & ")", , strDefaultDN)

    If strDN = "" Then WScript.Quit(1)       

    strGrupoLer = InputBox("Coloque o nome do Grupo para Permissão de Leitura" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoA" & ")", , "GrupoA")

    If strGrupoLer = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoLer,strDN

    strGrupoMod = InputBox("Coloque o nome do Grupo para Permissão de Modificar" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoB" & ")", , "GrupoB")

    If strGrupoMod = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoMod, strDN


    strCaminho = InputBox("Coloque o Caminho da Pasta" & _
        vbCrLf & "(Ex.:  " & "C:\pasta" & ")", , "C:\Pasta")

    If strCaminho = "" Then WScript.Quit(1)  

    strPasta = InputBox("Coloque o nome da Pasta" & _
        vbCrLf & "(Ex.:  " & "Pasta" & ")", , "Pasta")

    If strPasta= "" Then WScript.Quit(1)  

    Set strFolder = CreateObject("Scripting.FileSystemObject")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set WshShell=CreateObject("Wscript.Shell")

    If strFolder.FolderExists (strCaminho & "\" & strPasta) = False Then
       strFolder.CreateFolder (strCaminho & "\" & strPasta)
    End If


    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoLer  &":R"
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoMod  &":C"
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G "& strGrupoFull  &":F"

    Function CreateGrupo(nome,strDN)

    Set objContainer = GetObject("LDAP://" & strDN)

    Set objGroup = objContainer.Create("Group", "cn="& nome)
    objGroup.put "name",nome
    objGroup.put "SamAccountName", nome
    objGroup.put "description",nome
    objGroup.setinfo

    End Function


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    terça-feira, 28 de abril de 2009 20:06
  • Perfeito Jesiel,


    é mais um processo automatizado na empresa com a sua ajuda

    Abraço e classificado


    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    terça-feira, 28 de abril de 2009 20:30
  • Olá,

    Beleza Adriano,

    Qualquer coisa é só postar!!!!

    Até mais,

    Jesiel
    terça-feira, 28 de abril de 2009 20:31
  • Jesiel,

    Eu só estou tendo problemas com grupos com espaco de nomes, por exemplo:

    criar grupo "BR Company RH (M)"

    O script cria o grupo, mas não adiciona nas ACLS, agora se eu crio sem espaço, como por exemplo BR_COMPANY_RH_M, é criado e acrescentado sem problemas nas acls

    Um grupo fixo como por exemplo "sa\BR Landis Files Owners" é adicionado perfeitamente

    E tentei tambem de varias formas criar na descrição do grupo o padrão \\gru\\+nome da pasta criada

    veja o codigo

    Option Explicit
    on error resume next

    Dim objDSE, strDefaultDN, strDN, objContainer,objChild,objUser
    Dim strCaminho,strPasta,strGrupoLer,strGrupoMod,strGrupoFull
    Dim strFolder,WshShell,WshNetwork,objGroup

    Set objDSE = GetObject("LDAP://rootDSE")
    strDefaultDN = "CN=users," & objDSE.Get("defaultNamingContext")

    strDN =     InputBox("Coloque o Distinguished Name do Objeto" & _
        vbCrLf & "(Exemplo: " & strDefaultDN & ")", , strDefaultDN)

    If strDN = "" Then WScript.Quit(1)       

    strGrupoLer = InputBox("Coloque o nome do Grupo para Permissão de Leitura" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoA" & ")", , "GrupoA")

    If strGrupoLer = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoLer,strDN

    strGrupoMod = InputBox("Coloque o nome do Grupo para Permissão de Modificar" & _
        vbCrLf & "(Ex.:  " & "Dominio\GrupoB" & ")", , "GrupoB")

    If strGrupoMod = "" Then WScript.Quit(1)  

    CreateGrupo strGrupoMod, strDN


    strCaminho = InputBox("Coloque o Caminho da Pasta" & _
        vbCrLf & "(Ex.:  " & "D:\GRU\IT" & ")", , "D:\GRU\IT")

    If strCaminho = "" Then WScript.Quit(1)  

    strPasta = InputBox("Coloque o nome da Pasta" & _
        vbCrLf & "(Ex.:  " & "Pasta" & ")", , "Pasta")

    If strPasta= "" Then WScript.Quit(1)  

    Set strFolder = CreateObject("Scripting.FileSystemObject")
    Set WshNetwork = WScript.CreateObject("WScript.Network")
    Set WshShell=CreateObject("Wscript.Shell")

    If strFolder.FolderExists (strCaminho & "\" & strPasta) = False Then
       strFolder.CreateFolder (strCaminho & "\" & strPasta)
    End If


    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /t /c /G "& strGrupoLer  &":R"
    WScript.sleep 10000
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /e /c /G ""& strGrupoMod  &"":C"
    WScript.sleep 5000
    WshShell.Run "CACLS " & strCaminho & "\" & strPasta & " /E /c /G ""sa\BR Landis Files Owners"":F"


    Function CreateGrupo(nome,strDN)

    Set objContainer = GetObject("LDAP://" & strDN)

    Set objGroup = objContainer.Create("Group", "cn="& nome)
    objGroup.put "name",nome
    objGroup.put "SamAccountName", nome
    objGroup.Put "description", "\\gru\\" & strPasta & "
    objGroup.setinfo

    End Function


    MCP, MCDST, MCTS, MCSA, MCSE, MCT, ITIL
    quarta-feira, 29 de abril de 2009 12:30