Un client m’a appelé pour un problème sur une séquence de tâches de déploiement (OSD) d’un master Windows Server 2012 R2 avec System Center Configuration Manager. En regardant le processus d’exécution de séquence de tâches, on peut voir qu’il a systématiquement échoué à l’étape d’installation du .NET Framework 3.5 avec l’outil en ligne de commande DISM.
En regardant le fichier smsts.log, on peut observer le message suivant :
The task sequence execution engine failed executing the action (Install .NET Framework 3.5) in the group (Install .NET Framework 3.5) with the error code 2148468998
Action output: [ smsswd.exe ]
PackageID = ''
BaseVar = '', ContinueOnError=''
ProgramName = 'dism.exe /Online /Enable-Feature /FeatureName:NetFx3 /All /Source:F:\Sources\sxs'
SwdAction = '0001'
Command line for extension .exe is "%1" %*
Set command line: Run command line
Working dir 'not set'
Executing command line: Run command line
Deployment Image Servicing and Management tool
Version: 6.3.9600.17031
Image Version: 6.3.9600.17031
Enabling feature(s)
Process completed with exit code 2148468998
Error: 0x800f0906
The source files could not be downloaded.
Use the "source" option to specify the location of the files that are required to restore the feature. For more information on specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077.
The DISM log file can be found at C:\WINDOWS\Logs\DISM\dism.log
Command line returned 2148468998.
Au départ, j’ai pensé à une corruption des sources utilisées pour installer le .NET Framework 3.5 puisque ces dernières ne sont plus inclues dans Windows Server 2012 R2 nativement.
Cependant après avoir récupérer les sources depuis l’ISO, le problème persiste.
Le fichier DISM.log renvoie des erreurs comme suit :
The source files could not be downloaded.
Use the "source" option to specify the location of the files that are required to restore the feature. For more information about specifying a source location, see http://go.microsoft.com/fwlink/?LinkId=243077.
The DISM log file can be found at C:\Windows\Logs\DISM\dism.log
Windows couldn't complete the requested changes.
Windows couldn't connect to the Internet to download necessary files. Make sure that you're connected to the Internet, and click "Retry" to try again.
Installation of one or more roles, role services, or features failed.
The source files could not be found. Try installing the roles, role services, or features again in a new Add Roles and Features Wizard session, and on the Confirmation page of the wizard, click "Specify an alternate source path" to specify a valid location of the source files that are required for the installation. The location must be accessible by the computer account of the destination server.
0x800F0906 - CBS_E_DOWNLOAD_FAILURE
En réalité, le problème survient à cause de deux mises à jour publiées par Microsoft (2966827 et 2966828) qui engendre une régression et empêche l’installation du .NET Framework 3.5. CF : KB3002547
La mise à jour faisait partie de la liste des mises à jour pré chargées dans l’imager de d’installation.
Après vérification sur un serveur de test, le retrait de la mise à jour permet de résoudre le problème. Il est aussi possible d’appliquer le correctif 3005628 par-dessus la mise à jour incriminée pour résoudre le problème (Non testé de mon côté). Pour retirer la mise à jour, vous devez exécutez les lignes suivantes via PowerShell :
$WimFilePath = "<Chemin vers votre fichier WIM>"
DISM /get-wiminfo /wimfile:$WimFilePath
Récupérez l’index de l’image concerné
[Int]$IndexNumber = <Index de l’image>
Créez un répertoire pour monter l’image puis montez l’image via :
$TempMountDir = “<Chemin vers le repertoire pour monter l’image”
DISM /mount-wim /wimfile:"$WIMFilePath" /Index:$indexNumber /MountDir:$TempMountDir
Une fois montée, vous pouvez voir si la KB est effectivement inclue via :
DISM /image:$TemporaryMountFolderPath /Get-packages
Retirez ensuite la KB via :
DISM /image:$TemporaryMountFolderPath /remove-package /packagename: Package_for_KB2966827~31bf3856ad364e35~amd64~~6.2.1.0
Et/Ou
DISM /image:$TemporaryMountFolderPath /remove-package /packagename: Package_for_KB2966828~31bf3856ad364e35~amd64~~6.3.1.4
Démontez l’image et appliquez les changements :
DISM /unmount-wim /MountDir:$TemporaryMountFolderPath /discard
Vous pouvez ensuite ajouter à nouveau l’image à votre infrastructure Configuration Manager et l’inclure dans la séquence de tâches pour retester le processus.