Posts

  • Backup all DHCP Servers in a domain

    The following PowerShell script can be used to back up all the DHCP Servers in a domain.

    $LogDate = (Get-Date -Format "yyyy-MM-dd")
    
    $dhcpServers = Get-ADObject -SearchBase 'CN=NetServices,CN=Services,CN=Configuration,DC=contoso,DC=com' -Filter * -Properties dhcpIdentification | Where-Object {$_.dhcpIdentification -eq "DHCP Server object"}
    
    Foreach ($dhcpServer in $dhcpServers)
    {
      If (Test-Connection $dhcpServer-ErrorAction SilentlyContinue -Count 1)
      {
        $RemoteDirectory = "\\$dhcpServer\C$\Windows\System32\dhcp\backup"
        $LocalDirectory = "C:\Data\DHCPBackup\$dhcpServer"
        
        Try 
        { 
          Backup-DhcpServer -ComputerName $dhcpServer-Path "C:\Windows\system32\dhcp\backup" 
          robocopy $RemoteDirectory "$LocalDirectory\backup" *.* /e /zb /xjd /r:5 /w:5 /mir /log+:"C:\data\DHCPBackup\$LogDate.log" 
        }
        Catch
        { 
          Send-MailMessage -SmtpServer "emailrelay.contoso.com" `
                              -to "Me@contoso.com" `
                              -from "Blackhole@contoso.com" `
                              -Subject "Failed to back  up DHCP: $dhcpServer" 
        }
        Try
        {
          If(!(Test-Path "$LocalDirectory\export"))
          {
            New-Item "$LocalDirectory\export" -Type directory
          }
          
          Export-DhcpServer -ComputerName $DHCPServer -File "$LocalDirectory\export\$dhcpServer.xml" -Force 
        } 
        Catch 
        {
          Send-MailMessage -SmtpServer "emailrelay.contoso.com" `
                            -to "me@contoso.com" `
                            -From "Blackhole@contoso.com" `
                            -Subject "Failed to export DHCP configuration: $dhcpServer" 
          } 
      }
      Else
      {
        Send-MailMessage -SmtpServer "emailrelay.contoso.com" `
                          -to "me@contoso.com" `
                          -from "blackhole@contoso.com" `
                          -Subject "Unable to reach DHCP Server: $dhcpServer" 
      }
    }

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *