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

Cet article vous a plu ? N'hésitez pas à le partager.
  • 11
  •  
  •  
  •  
  •  
  •  
  •  
    11
    Shares

Add a Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *