Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save norman-bauer/ffe480276a701a62bb5650ea2affb453 to your computer and use it in GitHub Desktop.

Select an option

Save norman-bauer/ffe480276a701a62bb5650ea2affb453 to your computer and use it in GitHub Desktop.
import-module ActiveDirectory
function RestoreComputer($computername)
{
If ($computername.substring($computername.length – 1, 1) -ne ‘$’)
{
$computername += ‘$’
}
$existing = Get-ADObject -Filter {sAMAccountName -eq $computername}
If (!$existing)
{
"No existing computer object found, searching for deleted objects."
$deleted = Get-ADObject -IncludeDeletedObjects -Filter {sAMAccountName -eq $computername -and Deleted -eq $True}
If ($deleted)
{
"Deleted object found, trying to restore…"
$deleted | Restore-ADObject
Start-Sleep -s 5
$restoredobject = Get-ADObject -Filter {sAMAccountName -eq $computername}
If ($restoredobject)
{
"Computer object successfully restored. Trying to find recovery information…"
$recoveryinfos = Get-ADObject -IncludeDeletedObjects -Filter {lastKnownParent -eq $restoredobject.DistinguishedName -and Deleted -eq $True -and objectClass -eq ‘msFVE-RecoveryInformation’}
ForEach($recoveryinfo in $recoveryinfos)
{
If ($recoveryinfo)
{
"Recovery information found, trying to restore…"
$recoveryinfo | Restore-ADObject
Start-Sleep -s 5
$restoredinfo = Get-ADObject -Filter {ObjectGUID -eq $recoveryinfo.ObjectGUID}
If ($restoredinfo)
{
"Recovery information successfully restored."
}
Else
{
"Could not restore recovery information, aborting script."
return $false
}
}
Else
{
"No recovery information found for computer object, aborting script."
return $true
}
}
}
Else
{
"Something went wrong. Could not find restored object, aborting script."
return $false
}
}
Else
{
"No deleted computer found, aborting script"
return $false;
}
}
Else
{
"Computer already existing, aborting script"
return $false
}
"Restore of computer object succeeded."
"Finished."
return $true
}
$cn = Read-Host "Computername to restore?"
RestoreComputer($cn)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment