Récupérer la User State Recovery Key
Bonjour,
SCCM permet via des séquences de tâches de sauvegarder et restaurer l’état utilisateur lors d’une migration ou d’un refresh d’un poste de travail.
Il peut arriver néanmoins lors de la restauration que la clé soit perdue car la computer association a disparu comme c’est actuellement le cas chez un de mes clients.
Il est impossible de récupérer cette dite clé qui permet de déchiffrer la sauvegarde de l’utilisateur (au format .MIG), ni via une requête SQL ni via la console.
Il faut donc passer par un script PowerShell.
Le script que j’ai réalisé ci-dessous permet de récupérer l’ensemble des computers associations, avec le ResourceID Source, le ResourceID de destination, le chemin vers l’archive de sauvegarde sur le SMP ainsi que la clé de déchiffrage. Pensez à remplacer Site_XXX par votre tricode de site (en conservant le Site_).
Le résultat est alors stocké dans un fichier .CSV à la date du jour.
$requete="SELECT SourceClientResourceID, RestoreClientResourceID, StorePath FROM SMS_StateMigration"
$result = Get-WmiObject -Namespace "root\SMS\Site_XXX" -Query $requete
$tableauExport = @()
Foreach($row in $result){
$Query = "select * from SMS_StateMigration where SourceClientResourceID=" + $row.SourceClientResourceID + " and RestoreClientResourceID=" + $row.RestoreClientResourceID
$pStateMigration = Get-WmiObject -Namespace "root\SMS\Site_XXX" -Query $Query
$key=$pStateMigration.GetEncryptDecryptKey()
write-host "Poste source :" + $row.SourceClientResourceID + "=====> Poste cible "+ $row.RestoreClientResourceID
write-host "Clé = " $key.key
write-host "Path = "$row.StorePath
write-host " "
$ligne = New-Object System.Object
$ligne | Add-Member -MemberType NoteProperty -Name "Poste Source" -value $row.SourceClientResourceID
$ligne | Add-Member -MemberType NoteProperty -Name "Poste Destination" -value $row.RestoreclientResourceID
$ligne | Add-Member -MemberType NoteProperty -Name "Path" -value $row.StorePath
$ligne | Add-Member -MemberType NoteProperty -Name "Key" -value $key.key
$tableauExport+= $ligne
}
$Date = Get-Date -UFormat '%d_%m_%Y'
$FileName = "C:\temp\export_cles_recovery_"+$Date+".csv"
$tableauExport | Export-Csv -NoTypeInformation -Path $fileName -Delimiter ";"
Ensuite, rendez-vous sur le serveur SCCM dans le répertoire :
C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\User State Migration Tool\amd64\
(le chemin peut varier. En fonction de la version de l’ADK)
Et lancez l’une des deux commandes ci-dessous :
usmtutils /extract \\le_path_vers_le_mig C:\temp\dossier_de_destination /decrypt /key:la_cle
loadstate \\server\share\migration\mystore /i:migapp.xml /i:migdocs.xml /v:13 /decrypt /key:"mykey"
Pour en savoir plus :
Usmtutils : https://docs.microsoft.com/en-us/windows/deployment/usmt/usmt-utilities
Loadstate : https://docs.microsoft.com/en-us/windows/deployment/usmt/usmt-loadstate-syntax
Hope you enjoyed this article and that it will be useful for you.
Pour information, le Path emmène au dossier, il faut donc dans la commande rajouter le nom du fichier.mig
Par défaut il se nomme USMT.mig
11 - 11Shares