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.

lundi 4 novembre 2013

MDT 2012/2013 : Gérez les images de plus de 4 GO en USB UEFI

Abstract_II_Typol_2_0_by_paradoxchild

Le sujet est sur la table depuis plus d’un an… je l’avais déjà évoqué dans mon billet sur l’ UEFI, pourtant du côté de Microsoft, aucune solution n’est en vue. Officiellement , il à été décidé que le bug ne serait pas fixé avant la prochaine version d'MDT… Donc, tenez vous le pour dit :

Si vous souhaitiez installer Windows 7 ou 8.1 à partir d’une clé USB sur un PC en UEFI et que votre image WIM fait plus de 4 GO (elle ne peux donc plus tenir sur votre clé formatée en FAT32 qui ne supporte pas une telle taille de fichier)… patientez jusqu’a l’année prochaine… ou lisez la suite de ce billet…

 

Prérequis :

  • MDT 2012 U1 ou MDT 2013.
  • Un média amovible  supportant le boot en UEFI (donc formaté en FAT32).
  • Une image WIM de votre OS de plus de 4Go (un sysprep d’un Windows 8.1 x64 avec Office 2013, .Net 3.5 et Java est suffisant pour dépasser cette taille)
  • L’ outils  MDT Slasher est le script LTIApply.wsf à télécharger ici.
  • Si vous n’êtes pas sous Windows 8.1 vous aurez également besoin de Powershell 4 

 

 

Installation :

Remplacez le script LTIApply.wsf situé dans le répertoire scripts de votre Deployment Share par celui fourni avec l’archive. c’est tout ce qu’il y’a à faire pour la partie MDT.

changer la politique d’exécution des scripts powershell en ouvrant une console Powershell avec droit d’admin et en tapant :

set-executionpolicy -ExecutionPolicy Unrestricted

 

Utilisation :

Lancez MDT-Slasher.ps1. Ce script-application va vous permettre d’importer des images WIM de plus de 4 Go dans MDT en les découpant en parties plus petites. Il permet également de découper des images qui feraient déjà partie d’un Deployment Share qui se trouverai sur un partage réseau.

2013-11-01_19h31_54

Afin de pouvoir travailler, indiquez tout d’abord à MDT slasher l’emplacement de votre Deployment Share :

2013-11-01_19h35_22

Vous pourrez alors choisir parmi les images du Deployment Share celle qui a besoin d’être découpée :

2013-11-01_19h55_42

Si l’image que vous souhaitez découper ne fait pas partie de celle apparaissant dans la listbox, spécifiez directement le chemin de votre image WIM ainsi qu’un nom de répertoire à créer pour l’importation dans la partie de l’interface se trouvant juste en dessous :

2013-11-01_19h37_52

Une fois l’image choisie, appuyiez sur le bouton Split pour démarrer l’opération.

2013-11-03_08h41_24_thumb[1]

Lorsque l’import est terminé, vous pouvez ouvrir MDT afin de vérifier que votre image a bien été ajouté au répertoire Operating System :

image

Enfin, une verification du Deployment Share permettra  de constater que l’image WIM à bien été découpée et que les parties SWM sont également bien présentes :

2013-11-01_20h07_54

Voila, Tout est prêt. Votre image a été découpée, importée et son nouveau format est entièrement pris en charge par MDT. Vous pouvez maintenant utiliser ces images dans n’importe quelle Task Sequence en toute tranquillité.

 

Behind The Scene :

Quelques explications sur le “comment ça marche” : DISM permet de découper les images WIM, mais il sait aussi appliquer ces images découpées. MDT sait importer le premier tronçon de ces images découpées pourvu qu’il ait une extension en .WIM. (les autres parties en .SWM doivent être copiés à la main). Pour le reste, toute la magie réside dans  la modification (moins de 10 lignes) du script LTIApply.wsf en permettant à celui-ci d’utiliser DISM à la place d’ImageX lorsqu’il doit traiter des images SWM !

Phew… Simply state of the art !!!…

lundi 29 juillet 2013

MDT 2012/2013 : Bloquez L’exécution des GPO.

flinsectoid

Ce cas va forcement vous arriver : vous devez déployer une machine qui va intégrer un domaine tout en retardant l’application des GPO afin de ne pas compromettre votre déploiement !!...

La solution (inspirée par Steven Yarnot, merci à lui !) consiste à désactiver le service GpSvc (Group Policy Service) le temps de l’installation et à le réactiver à la fin de celle-ci. Comme ce service ne peut pas être désactivé même avec des droits d’admin, nous allons nous aider de PsExec afin d’obtenir des privilèges système.

Prérequis

 

Installation

Copiez PsExec dans les répertoires ..\Tools\x86 et ..\Tools\x64 de votre DeploymentShare.

Puis dans MDT ouvrez votre Task Sequence et ajoutez le script ZTIGPOBlocker.wsf juste après l’étape Gather local only dans la section State Restore.

La commande à saisir est Cscript.exe "%SCRIPTROOT%\ZTIGPOBlocker.wsf" /on

image

Nous allons également ajouter l’étape de réactivation des GPO en fin de déploiement : Toujours dans la section State Restore juste après l’étape Apply Local GPO Package ajoutez la commande  Cscript.exe "%SCRIPTROOT%\ZTIGPOBlocker.wsf" /off comme décrit sur l’image ci-dessous :

image

Votre bloqueur de GPO est prêt !

Note : Durant le déploiement, si le script fonctionne correctement, vous serez “poppé” par un message système non bloquant vous rappelant que les GPO ne peuvent pas s’appliquer:

NoGPO-2013-07-16_14h58_07