lundi 16 décembre 2013

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


4aa44b70189d918b


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…

2013-12-16_01h25_19
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> :

2013-12-16_12h18_38

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.2
#//  Release Date : 15/12/2013
#//  Latest Update : 16/12/2013
#//  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)
       }
      Else
       {
        $Item.Source = $Item.WorkingDirectory  
       }
      Write-host "New Item $i Source :  $($Item.source)"
     }
    Else
     {
      Write-host "Item $i doesn't need to be updated !" 
     }
    $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>.

2013-12-16_12h56_38

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.

Aucun commentaire:

Enregistrer un commentaire