MDT 2013 :[BugFix] Des applications sont manquantes lors de la création d’un Média !

Publié le 16 décembre 2013 par Diagg @diagg



Le Problème :


Vous souhaitez exporter votre Deployement Share vers un média amovible, et avez crée à cet effet un profile qui contient toutes les applications nécessaires à la bonne installation de votre PC !
Cependant, une fois l’ISO crée, vous vous rendez compte qu’il vous manque des applications alors qu’elles font bien partie de votre profile…


Pourquoi :


Une recherche sur google nous apprend (grâce à NDR00) que ce comportement est lié au fait que le champ source de votre application est : soit  vide, soit diffèrent du chemin réel de votre application…

Si vous pensiez régler le problème en modifiant manuellement le champ… pas de chance, il est grisé !!!
Il va donc falloir supprimer et réimporter toutes vos applications… ou utiliser PowerShell !!..


La solution :


Toutes les informations concernant les applications figurent dans Le  fichier ..Deploy\Control\Applications.xml.
Le chemin de chaque application est référencé grâce aux balises <WorkingDirectory> :

I’idée est de créer des balises <Sources> pour les applications qui n’en disposent pas et de toutes les remplir avec le chemin indiqué par les balises <WorkingDirectory>
Et pour cela, rien de plus évident que PowerShell :
#//—————————————————————————-
#//  This script by Diagg/Zany & OpenEyes.
#//   http://www.zany-openeyes.blogspot.com/
#//   http://www.osd-couture.com/
#//
#//  Version : 0.1
#//  Release Date : 15/12/2013
#//  Latest Update :
#//  Usage :
#//  Warning :
#//—————————————————————————-
cls
#Path of the file to fix (should Be application.xml)
$AppXML = "D:\MDT-Sysprep\Deploy\Control\Applications.xml"
if (Test-Path -LiteralPath $AppXML)
   {
   [xml]$XmlFile = Get-Content -LiteralPath $AppXML
   $i = 1
  
   foreach($item in $XmlFile.applications.application)
   {
   Write-host "Item $i Source : $($item.Source)"
   Write-host "Item $i Working Directory : $($item.WorkingDirectory)"
  
   If (-not($Item.WorkingDirectory -eq $null))
   {
   If ($Item.Source -eq $null)
   {
   $NewItem = $XmlFile.CreateElement("Source")
   $NewItem.Innertext = $Item.WorkingDirectory
   [Void]$Item.AppendChild($NewItem)
   }
   Write-host "New Item $i Source :  $($Item.source)"
   }
   $i++
   Write-Host "`n"
   }
   $XmlFile.Save($AppXML)
   }  

Grace à ce script, les balises manquantes sont crées et le contenu de <WorkingDirectory> est systématiquement recopié dans les balises <Sources>.

Avant d'utiliser le script, pensez  à modifier la ligne 16 afin d’y spécifier le chemin de votre DeploymentShare.
Suite à cela, il ne vous reste plus qu’à mettre de nouveau à jour votre média de déploiement. Et pour l’avenir, ayez comme bonne pratique de lancer le script avant toute création de nouveau média.