none
Monitorar mudança em objeto do AD RRS feed

  • Pergunta

  • Bom dia Galera,

    Alguém tem um script vbs que verifica se ocorreu alguma mudança em dois grupos do AD? Bastaria verificar se o atributo "Modified" esta diferente desde a última verificação, e se diferente, envia e-mail.

    Como exemplo, o campo Modified de um dos grupos esta como 08/05/2011 01:13:15

    Obrigado,

    segunda-feira, 24 de setembro de 2012 10:30

Respostas

  • Amigo faça o seguinte abra o powershell como administrador e execute

    Import-module activedirectory

    depois execute

    Get-ADGroup "GRUPO" | Get-ADGroupMember | %{$_.Name}

    isso te traz o nome de todos membros do grupo, o que tu vai ter que fazer é uma logica para salvar em um arquivo o atual e de x em x tempos verificar se houve alterações

    No meu blog estou colocando post para pessoal novato no powershell

    http://howtoserver.com/aprendendo-powershell-parte-3/

    http://howtoserver.com/aprendendo-powershell-parte-2/

    http://howtoserver.com/aprendendo-powershell-pratica-parte-1/

    http://howtoserver.com/aprendendo-powershell/


    Ajudei? Marca como útil, aproveita e visita meu blog :) HowToServer.com Gosta de powershell? entra no grupo do facebook Powershell Brasil

    • Sugerido como Resposta Matheus Kamphorst quinta-feira, 27 de setembro de 2012 15:51
    • Não Sugerido como Resposta K.ryn quinta-feira, 27 de setembro de 2012 17:56
    • Marcado como Resposta Fábio JrModerator quarta-feira, 3 de outubro de 2012 15:30
    quinta-feira, 27 de setembro de 2012 15:51

Todas as Respostas

  • K.ryn

    Tente utilizar o comando Get-ADGroup do PowerShell. Veja se ele tem o atributo que vc precisa se tiver então vc vai ter que fazer o seguinte.

    1. Gravar em um arquivo o nome do grupo e data de modificação: (Primeira execução) , tente utilizar o formato (nome do grupo;data)

    2. Leia o arquivo e gerado (get-content), faça um for para localizar cada grupo utilizando o nome do grupo de cada linha e compare com a data do mesmo arquivo.

    Tente fazer o script inicial, se estiver com dificuldade poste o código aqui que eu vou ajudando.

    Get-ADGroup 

    technet.microsoft.com/en-us/library/ee617196.aspx

    Using the Get-Content Cmdlet 

    technet.microsoft.com/en-us/library/ee176843.aspx


    Fábio de Paula Junior


    • Editado Fábio JrModerator segunda-feira, 24 de setembro de 2012 11:47
    • Sugerido como Resposta Matheus Kamphorst quinta-feira, 27 de setembro de 2012 15:45
    • Não Sugerido como Resposta K.ryn quinta-feira, 27 de setembro de 2012 17:56
    • Sugerido como Resposta Matheus Kamphorst domingo, 30 de setembro de 2012 14:41
    segunda-feira, 24 de setembro de 2012 11:46
    Moderador
  • Fabio,

    Não entendo nada de powershell, mas achei esse script e pelo que eu entendi, ele varre o AD inteiro, e o que eu preciso é monitorar apenas dois grupos.

    Pode ajudar na alteração do script abaixo?

    <# 
       .Synopsis 
        This report runs against Active Directory to compare group membership changes. 
       .Description 
        Requires the Quest Active Directory Snapin to be loaded. 
       .Example 
        .\Get-ADGroupsReport.ps1 
       .Inputs 
        N/A 
       .OutPuts 
        N/A 
       .Notes 
        NAME: Get-ADGroupsReport.ps1 
        AUTHOR: Benjamin R Wilkinson 
        HANDCODED: Using Windows PowerShell ISE. 
        VERSION: 1.0.0 
        LASTEDIT: 06/23/2010 
        KEYWORDS:  
       .Link 
    #> 
    #Requires -Version 2.0 
    [CmdletBinding()] 
     Param  
       ( 
        [Alias("d")] 
        [String]$dir = "C:\PS\ADReport\Reports",  
        [String]$reportname = "reportfile.txt", 
        [Alias("r")] 
        [String]$Root = 'Domain.org/Domain Admins', 
        [Alias("g")]  
        [String]$DomainGroup = "Domain Admins", 
        [String]$PreferredDC = "favDC01.domain.org" 
       )#End Param 
     
    Add-PSSnapin "Quest.ActiveRoles.ADManagement" -ErrorAction 0 
    Connect-QADService -Service $PreferredDC 
     
    $file = Join-Path -path $dir -childpath "$DomainGroup.xml" 
    $attachment = Join-Path -path $dir -childpath $reportname 
    if (test-path $file) 
       { 
        $PreviousAccess = Import-Clixml $file 
       } 
    else 
        {Write-Host "No Previous file was available to compare for $DomainGroup"} 
         
    $Group = Get-QADObject -SizeLimit 100 -SearchRoot $Root |  
    Where-Object {$_.Name -eq $DomainGroup -and $_.Type -eq "group"| 
    ForEach-Object {Write-Host "There are" $_.AllMembers.count "members in the" $_.Name "group";$_} 
     
    $CurrentAccess = $Group | ForEach-Object {$_.AllMembers} | 
    ForEach-Object { 
            $Hash = @{  
                Name=(Get-QADObject -Identity $_).Name 
                Group=$DomainGroup} 
            New-Object PSObject -Property $Hash 
    } 
    $CurrentAccess | Export-Clixml $file 
     
    if ($PreviousAccess) 
        { 
         $difference = Compare-Object -ReferenceObject $PreviousAccess -DifferenceObject $CurrentAccess -Property Name | 
         ForEach-Object {$_} 
         $differencetext = $difference | Format-Table -AutoSize | Out-String -width 280 
         $differencetext 
        } 
     
    if ($difference) 
        { 
         $DifferenceObject = $Difference | ForEach-Object { 
         if ($_.SideIndicator -eq "<=") 
            { 
                $_ | Add-Member -MemberType NoteProperty -Name MemberChange -Value "Removed from Group" -Force 
                $_ | Add-Member -MemberType NoteProperty -Name DomainGroup -Value $DomainGroup -Force 
            } 
         elseif ($_.SideIndicator -eq "=>") 
            {      
                $_ | Add-Member -MemberType NoteProperty -Name MemberChange -Value "Added to Group" -Force 
                $_ | Add-Member -MemberType NoteProperty -Name DomainGroup -Value $DomainGroup -Force 
            } 
         $_ 
         } | Select-Object Name, MemberChange,DomainGroup 
          
         Send-HTMLEmail -InputObject $DifferenceObject -Subject "$DomainGroup - Change in Group Members!" -To Admin@domain.org 
        } 
     else 
        { 
         write-host "There are no changes in the $DomainGroup group" 
         write-host "" 
        } 

    segunda-feira, 24 de setembro de 2012 13:06
  • Alguém pode dar uma ajuda?

    Obrigado

    quinta-feira, 27 de setembro de 2012 10:48
  • Amigo faça o seguinte abra o powershell como administrador e execute

    Import-module activedirectory

    depois execute

    Get-ADGroup "GRUPO" | Get-ADGroupMember | %{$_.Name}

    isso te traz o nome de todos membros do grupo, o que tu vai ter que fazer é uma logica para salvar em um arquivo o atual e de x em x tempos verificar se houve alterações

    No meu blog estou colocando post para pessoal novato no powershell

    http://howtoserver.com/aprendendo-powershell-parte-3/

    http://howtoserver.com/aprendendo-powershell-parte-2/

    http://howtoserver.com/aprendendo-powershell-pratica-parte-1/

    http://howtoserver.com/aprendendo-powershell/


    Ajudei? Marca como útil, aproveita e visita meu blog :) HowToServer.com Gosta de powershell? entra no grupo do facebook Powershell Brasil

    • Sugerido como Resposta Matheus Kamphorst quinta-feira, 27 de setembro de 2012 15:51
    • Não Sugerido como Resposta K.ryn quinta-feira, 27 de setembro de 2012 17:56
    • Marcado como Resposta Fábio JrModerator quarta-feira, 3 de outubro de 2012 15:30
    quinta-feira, 27 de setembro de 2012 15:51
  • Pessoal, agradeço a ajuda, mas o objeto era utilizar um script para esse fim. Obter a informação por meio de comando eu sei que é possível mas não era o que eu esperava.

    Novamente, agradeço a contribuição.

    quinta-feira, 27 de setembro de 2012 17:58
  • Ok, mas com o comando você formula o seu script.

    Você pode fazer assim, salve isso em um arquivo .ps1

    Aqui tem a explicação de como fazer o script 

    http://social.technet.microsoft.com/wiki/pt-br/contents/articles/13772.aprendendo-powershell.aspx

    toda via hoje de noite eu te posto um exemplo.


    Ajudei? Marca como útil, aproveita e visita meu blog :)
    HowToServer.com
    Gosta de powershell? entra no grupo do facebook Powershell Brasil
    Quer aprender powershell? leia esse artigo Aprendendo Powershell

    domingo, 30 de setembro de 2012 14:40