none
Lêr arquivo txt em Vbscript RRS feed

  • Pergunta

  • Olá,

     

    Gostaria de uma ajuda referente a Vbscript.

    Eu tenho um arquivo txt com cerca de 250 usuários e gostaria de rodar um comando para remover todos os grupos dos usuários que consta no arquivo

    Estou usando o comando abaixo, mais só server para remover um a um.

    Gosatia de editar da seguinte forma:

    Que ele leia o arquivo em c:\users.txt e leia todas as linhas que conta o sAMAccountName, ou poderia ser pelo CN

    On Error Resume Next
    Const ADS_PROPERTY_DELETE = 4
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set objUser = GetObject _
        ("
    LDAP://cn=usuario que será removido,ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho")
    arrMemberOf = objUser.GetEx("memberOf")
     
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "This account is not a member of any security groups."
        WScript.Quit
    End If
     
    For Each Group in arrMemberOf
        Set objGroup = GetObject("LDAP://" & Group)
        objGroup.PutEx ADS_PROPERTY_DELETE, _
            "member", Array("cn=usuario que será removido,ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho    objGroup.SetInfo
    Next

    Obrigado pela ajuda,

    • Movido Erick Albuquerque quinta-feira, 30 de setembro de 2010 18:46 Fórum apropriado (De:Windows Server 2003)
    quinta-feira, 30 de setembro de 2010 14:53

Respostas

  • Tente Assim:

    Salve esse script no C: por exemplo como DeleteGroups.vbs

    Dim str_Cn_user
    str_Cn_user = WScript.Arguments(0)
    WScript.Echo str_Cn_user
    On Error Resume Next
    Const ADS_PROPERTY_DELETE = 4
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set objUser = GetObject _
        ("LDAP://cn=" & str_Cn_user & ",ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho")
    arrMemberOf = objUser.GetEx("memberOf")
     
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "This account is not a member of any security groups."
        WScript.Quit
    End If
     
    For Each Group in arrMemberOf
        Set objGroup = GetObject("LDAP://" & Group)
        objGroup.PutEx ADS_PROPERTY_DELETE, _
            "member", Array("cn=" & str_Cn_user & ",ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho")
        objGroup.SetInfo
    Next

    Abra uma janela do cmd e copie esse comando:

    for /F %i IN (C:\USERS.TXT) DO cscript c:\DeleteGroups.vbs %i

    Qualquer dúvida poste.

    Abraço.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sábado, 2 de outubro de 2010 15:47

Todas as Respostas

  • Olá,

    Estou movendo sua thread para o fórum de Scripts.

    Att,


    Erick Albuquerque
    Blog: http://erickalbuquerque.com.br
    Twitter: @_ealbuquerque
    Linkedin: http://br.linkedin.com/in/easantos
    Winseg.Org
    quinta-feira, 30 de setembro de 2010 18:46
  • Tente Assim:

    Salve esse script no C: por exemplo como DeleteGroups.vbs

    Dim str_Cn_user
    str_Cn_user = WScript.Arguments(0)
    WScript.Echo str_Cn_user
    On Error Resume Next
    Const ADS_PROPERTY_DELETE = 4
    Const E_ADS_PROPERTY_NOT_FOUND  = &h8000500D
     
    Set objUser = GetObject _
        ("LDAP://cn=" & str_Cn_user & ",ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho")
    arrMemberOf = objUser.GetEx("memberOf")
     
    If Err.Number = E_ADS_PROPERTY_NOT_FOUND Then
        WScript.Echo "This account is not a member of any security groups."
        WScript.Quit
    End If
     
    For Each Group in arrMemberOf
        Set objGroup = GetObject("LDAP://" & Group)
        objGroup.PutEx ADS_PROPERTY_DELETE, _
            "member", Array("cn=" & str_Cn_user & ",ou=Users,ou=disabled users,dc=inserir caminho,dc=inserir caminho,dc=inserir caminho")
        objGroup.SetInfo
    Next

    Abra uma janela do cmd e copie esse comando:

    for /F %i IN (C:\USERS.TXT) DO cscript c:\DeleteGroups.vbs %i

    Qualquer dúvida poste.

    Abraço.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sábado, 2 de outubro de 2010 15:47
  • Olá Gabriel,

    Testei o comando e deu certinho....

    Muito Obrigado pela ajuda!!!

    terça-feira, 5 de outubro de 2010 11:47
  • Boa tarde!

    Gabriel,

    Aproveitando o fórum, será que poderia me ajudar? É que eu gostaria de ter um script de logon que mapeasse os diretórios compartilhados por grupo e dentro dos grupos, que ele verificasse o nome do usuário para poder montar o compartilhamento. O motivo é que dentro de cada setor tenho mais de um usuário e eles não podem ter acesso as pastas um do outro por política da empresa. Sei que posso criar um script individual para cada usuário e colocar em seu perfil pelo AD, mas gostaria de ter somente um script.

    Se entrar no meu perfil, verá esta mesma pergunta com mais detalhes.

    Desde de já obrigado.

    terça-feira, 5 de outubro de 2010 18:41
  • Já que pretende criar pastas individuais por usuário pq não utiliza perfis móveis?

    Abs.


    Gabriel Nascimento MCP / MCTS / MCSA / MCSE / CCNA http://gabrielnascimentoit.spaces.live.com -- Se for útil vote.
    sábado, 9 de outubro de 2010 03:23