none
Powershell에서 삭제된 객체 검색 RRS feed

답변

  • 안녕하십니까? 김도남 님

    Microsoft TechNet Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “Powershell에서 삭제된 객체 검색에 대한 답변을 드리겠습니다.

     

    Powershell에서 .NET Framework 를 이용해서 Active Directory에서 삭제된 Object 정보를 제공할 수 있습니다.

     

     

    Step 1 : Computer

     

    아래의 함수는 삭제된 Computer객체의 정보를 제공을 합니다. DirectorySearcher Class Filter속성에 LDAP Filter Expression을 이용해서 필터 문자열을 설정할 수 있습니다. 아래의 함수는 objectClass, SamAccountName, IsDeleted 속성을 이용해서 필터링을 합니다.

     

    function Get-TombstoneComputer

    {   

        trap [Exception]

        {

            Write-Host $_.Exception.Message;

            continue;

        }      

         

      $root= New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE") 

      $searcher = New-Object System.DirectoryServices.DirectorySearcher($root.defaultNamingContext) 

      $searcher.Filter = "(&(isDeleted=TRUE))(objectClass=Computer)(!(samaccountname=*$)))" 

      $searcher.tombstone = $true 

      $searcher.FindAll()    

       

    }

     

    Get-TombstoneComputer

     

    Step 2 : User

     

    아래의 함수는 삭제된 User객체의 정보를 제공을 합니다. 아래의 함수는 objectClass User, SamAccountName *$형식, isDeleted Flag True 필터로 설정이 되어 있습니다.

     

     

    function Get-TombstoneUser

    {   

        trap [Exception]

        {

            Write-Host $_.Exception.Message;

            continue;

        }      

         

      $root= New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE") 

      $searcher = New-Object System.DirectoryServices.DirectorySearcher($root.defaultNamingContext) 

      $searcher.Filter = "(&(isDeleted=TRUE))(objectClass=User)(!(samaccountname=*$)))" 

      $searcher.tombstone = $true 

      $searcher.FindAll()    

       

    }

     

     

    Get-TombstoneUser

     

     

    Step 3 : Object

     

    아래의 함수는 삭제된 객체의 정보를 제공을 합니다. isDeleted Flag True로 필터가 설정이 되어 있어 User, Computer 객체의 클래스에 상관없이 삭제된 모든 객체의 정보를 제공을 합니다.

     

    function Get-TombstoneObject

    {   

        trap [Exception]

        {

            Write-Host $_.Exception.Message;

            continue;

        }      

         

      $root= New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE") 

      $searcher = New-Object System.DirectoryServices.DirectorySearcher($root.defaultNamingContext) 

      $searcher.Filter = "(&(isDeleted=TRUE))" 

      $searcher.tombstone = $true 

      $searcher.FindAll()    

       

    }

     

     

    Get-TombstoneObject

     

    참고 자료

     

    DirectoryEntry 클래스

    http://msdn.microsoft.com/ko-kr/library/system.directoryservices.directoryentry.aspx

     

    DirectorySearcher 클래스

    http://msdn.microsoft.com/ko-kr/library/system.directoryservices.directorysearcher.aspx

     

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    • 답변으로 표시됨 김도남 2011년 12월 8일 목요일 오전 8:12
    2011년 12월 7일 수요일 오전 12:25
    중재자