none
PowerShell - ForEach para usuarios e grupos RRS feed

  • Pergunta

  • Pessoal,

    Mais uma vez estou com dúvidas em um script PowerShell. Estou errando em algum ponto que não consigo encontrar...reiterando que sou leigo e um entusiasta em automação.

    Tenho uma lista de usernames em um TXT, outra lista com grupos do AD em um arquivo TXT também. Preciso de um script que coloque esses usuários nos grupos. Tentei o script abaixo sem sucesso...fiz diversas tentativas mas, não consegui até agora.

    Alguém poderia me ajudar? Segue:

    $Users = Get-Content C:\UserList.txt
    $Groups = Get-Content C:\Groups.txt
    ForEach ($User in $Users) #é a partir daqui que me perdi...
        {
            Get-ADUser -Filter 'Name -eq $User' | Add-ADPrincipalGroupMembership -MemberOf $Group }

    Uilson Souza | MCTS ISA Server | MTAC - Microsoft Technical Audience Contributor http://uilson76.wordpress.com

    quarta-feira, 9 de março de 2016 02:26

Respostas

  • Se você tem duas listas, você precisa percorrer ambas para chegar ao que precisa neste cenário.

    $UserNames = Get-Content C:\UserNames.txt
    $GroupNames = Get-Content C:\GroupNames.txt
    ForEach ($Group in $GroupNames) {
        ForEach ($User in $UserNames) {
            Add-ADGroupMember -Identity $Group -Members $User -Confirm:$False
        }
    }

    O primeiro laço (ForEach) irá percorrer grupo por grupo. O segundo laço irá percorrer usuário por usuário inserindo-o no grupo atual que foi obtido no primeiro laço colocando todos os usuários em UserNames.txt dentro de cada grupo em GroupNames.txt.

    É claro que eu estou presumindo que você tenha o SAMAccountName dos usuários no arquivo UserNames.txt e o SAMAccountName dos grupos no arquivo GroupNames.txt.


    • Editado 4HorsemenOfDaIT quarta-feira, 9 de março de 2016 12:36
    • Marcado como Resposta Uilson Souza quarta-feira, 9 de março de 2016 13:38
    quarta-feira, 9 de março de 2016 03:03

Todas as Respostas

  • Se você tem duas listas, você precisa percorrer ambas para chegar ao que precisa neste cenário.

    $UserNames = Get-Content C:\UserNames.txt
    $GroupNames = Get-Content C:\GroupNames.txt
    ForEach ($Group in $GroupNames) {
        ForEach ($User in $UserNames) {
            Add-ADGroupMember -Identity $Group -Members $User -Confirm:$False
        }
    }

    O primeiro laço (ForEach) irá percorrer grupo por grupo. O segundo laço irá percorrer usuário por usuário inserindo-o no grupo atual que foi obtido no primeiro laço colocando todos os usuários em UserNames.txt dentro de cada grupo em GroupNames.txt.

    É claro que eu estou presumindo que você tenha o SAMAccountName dos usuários no arquivo UserNames.txt e o SAMAccountName dos grupos no arquivo GroupNames.txt.


    • Editado 4HorsemenOfDaIT quarta-feira, 9 de março de 2016 12:36
    • Marcado como Resposta Uilson Souza quarta-feira, 9 de março de 2016 13:38
    quarta-feira, 9 de março de 2016 03:03
  • Anderson, mais uma vez muito obrigado pela ajuda, atenção e pelo aprendizado...

    Como vc já sabe, estou invetindo tempo no aprendizado de Powershell e as vezes me perco para montar alguns scripts...me perdi na hora de criar o laço entre usuários e grupos.

    Fiz o teste aqui e funcionou perfeitamente...vou aplicar em produção para as contas que precisam ser inseridas nos grupos em questão.

    De novo, muito obrigado!


    Uilson Souza | MCTS ISA Server | MTAC - Microsoft Technical Audience Contributor http://uilson76.wordpress.com

    quarta-feira, 9 de março de 2016 13:39
  • Essa é apenas uma questão de trabalhar e desenvolver a sua lógica de programação. Com o passar do tempo você vai começar a ver o desenho dos scripts que deseja mentalmente e de forma simples.
    quarta-feira, 9 de março de 2016 13:45
  • Com certeza! Obrigado!

    Uilson Souza | MCTS ISA Server | MTAC - Microsoft Technical Audience Contributor http://uilson76.wordpress.com

    quarta-feira, 9 de março de 2016 14:22