Last active
August 28, 2019 06:50
-
-
Save norman-bauer/ffe480276a701a62bb5650ea2affb453 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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