ค้นหาเว็บไซต์

ค้นพบการสำรองข้อมูล Domain Controller ก่อนที่จะบูม


ทุกคนยอมรับว่าการสำรองข้อมูลตัวควบคุมโดเมนมีความสำคัญ แม้แต่บริการหลักหลายรายการเช่น Active Directory ก็ควรได้รับการสำรองข้อมูลเป็นประจำ แม้ว่าคุณจะมีสำเนาของฐานข้อมูล Active Directory และ SYSVOL บนเซิร์ฟเวอร์ต่างๆ ที่กระจายอยู่ทั่วโลก แต่ก็ไม่ได้หมายความว่าคุณควรเพิกเฉยต่อการสำรองข้อมูล ขึ้นอยู่กับช่วงเวลาการจำลอง การเปลี่ยนแปลงที่ผิดพลาดประการหนึ่งสามารถแพร่กระจายไปทั่วทั้งสภาพแวดล้อม Active Directory ของคุณได้อย่างรวดเร็ว!

ทำความเข้าใจวิธีการทำงานของการสำรองข้อมูลตัวควบคุมโดเมน

คุณจะทราบได้อย่างไรว่า Active Directory ได้รับการ "สำรองข้อมูล" แล้วหรือยัง?

เนื่องจากในทางเทคนิคแล้ว Active Directory มีอยู่ในเซิร์ฟเวอร์จำนวนมาก (ตัวควบคุมโดเมน) คุณจึงสามารถสำรองฐานข้อมูล Active Directory บนตัวควบคุมโดเมนทุกตัวได้ คุณยังสามารถรับบริบทหรือพาร์ติชันการตั้งชื่อแต่ละรายการที่ละเอียดและสำรองข้อมูลได้มากขึ้นอีกด้วย

ทุกครั้งที่สำรองข้อมูลพาร์ติชันบนตัวควบคุมโดเมน เหตุการณ์จะถูกบันทึกใน DC การใช้โปรแกรมอรรถประโยชน์ repadmin ช่วยให้คุณสามารถสอบถามวันที่นี้ได้

Repadmin เป็นโปรแกรมอรรถประโยชน์ที่สร้างไว้ใน Windows Server 2008 และสูงกว่าบน DC และใช้เพื่อทำหน้าที่การจัดการต่างๆ มากมายรอบๆ Active Directory หนึ่งในฟังก์ชันของ repadmin คือการค้นหาเวลาสำรองข้อมูลล่าสุดของแต่ละพาร์ติชันในฐานข้อมูล Active Directory

คุณสามารถดูได้ว่าคุณเรียกใช้ repadmin.exe /showbackup หรือไม่ โดยจะสอบถามเวลาการสำรองข้อมูลสำหรับแต่ละพาร์ติชันบน localhost ในกรณีนี้ ฉันรันมันบนตัวควบคุมโดเมนโดยตรง อย่างไรก็ตาม คุณไม่จำเป็นต้องทำเช่นนี้ จะเป็นประโยชน์มากกว่าหากได้รับข้อมูลนี้จากตัวควบคุมโดเมนทั้งหมดในฟอเรสต์ทั้งหมดเพื่อให้เห็นภาพสถานะการสำรองข้อมูลของตัวควบคุมโดเมนของคุณที่ใหญ่ขึ้น

ในการดำเนินการนี้ เราจะต้องได้รับความช่วยเหลือจาก Windows PowerShell และโมดูล Active Directory
โมดูล Active Directory มี cmdlet ที่มีประโยชน์ที่เรียกว่า Get-ADForest ที่จะระบุโดเมนทั้งหมดที่มีอยู่ในฟอเรสต์ได้อย่างง่ายดาย หนึ่งในคุณสมบัติที่เอาต์พุต Get-ADForest เรียกว่า Domains

PS51> $domains = (Get-ADForest).Domains

ตอนนี้เรามีรายการโดเมนในฟอเรสต์แล้ว ต่อไป เราจะต้องค้นหาตัวควบคุมโดเมนทั้งหมดในแต่ละโดเมนเหล่านั้น เมื่อต้องการทำเช่นนี้ เราสามารถใช้ cmdlet Get-ADDomainController

$domainControllers = ($domains | foreach { Get-ADDomainController-Server $_ -Filter * }).HostName

ต่อไป เราจะส่งตัวควบคุมโดเมนแต่ละตัวเหล่านี้ไปยังยูทิลิตี repadmin เพื่อค้นหาเวลาการสำรองข้อมูลล่าสุดสำหรับแต่ละพาร์ติชัน Active Directory บนตัวควบคุมโดเมนแต่ละตัว

PS51> $backups = $domainControllers | foreach { repadmin.exe /server $_ }

สิ่งนี้จะทำให้เราได้ผลลัพธ์คร่าวๆ ของวันที่สำรองข้อมูลตัวควบคุมโดเมนของแต่ละพาร์ติชันบนตัวควบคุมโดเมนแต่ละตัวในโดเมนทั้งหมดในฟอเรสต์ปัจจุบันของเรา

อย่างไรก็ตาม อย่างที่คุณเห็นจากเอาต์พุต repadmin /showbackup ผลลัพธ์ที่ได้ไม่สวยนักและอาจอ่านยาก สำหรับสิ่งนี้ ฉันจะใช้ความสามารถในการแยกวิเคราะห์สตริงของ PowerShell และนิพจน์ทั่วไปบางส่วนเพื่อให้ได้ผลลัพธ์ที่ดูดีกว่ามาก

## Loop through each domain controller
$domainControllers | foreach {
    $backups = repadmin.exe /showbackup $_
    
    ## Capture the output ofrepadmin
    $output = @{ 'DomainController' = $_ }
    
    ## Start collectingproperties for output
    for ($i = 0; $i -lt $backups.Count; $i++) { ## Begin looking atrepadmin output
        if ($backups[$i] -match '^(CN|DC)') { ## If the line has apartition.
            ## Assign the partition name and the date/time to the output hashtable
            ## and send $output with the DomainController, Partition and DateTime
            $output.Partition = $backups[$i]
            $output.DateTime = [regex]::Match($backups[$i +2],'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})').Groups[1].Value
            [pscustomobject]$output
        }
    }
}

นี่จะทำให้คุณได้รับรายงานการสำรองข้อมูลตัวควบคุมโดเมนที่ดูดีขึ้นมาก

สรุป

การใช้ยูทิลิตีบรรทัดคำสั่ง repadmin และ PowerShell-fu เล็กน้อย คุณจะพบเวลาล่าสุดที่ตัวควบคุมโดเมนของคุณได้รับการสำรองข้อมูล ทั้งหมดนี้ส่งคืนให้คุณในการออกแบบเชิงวัตถุที่มีการจัดรูปแบบอย่างสวยงามด้วย PowerShell

บทความที่เกี่ยวข้อง