prive:windows:microsoft-deployment-toolkit

Ceci est une ancienne révision du document !


Microsoft Deployment Toolkit (MDT)

Ces répertoires contiennent les informations suivantes:

$OEM$: Ce répertoire est utilisé pour certaines installation sans assistance (unattended), concernant les anciens systèmes d’exploitations (Windows XP/2003 par exemple)
Applications: Ce répertoire contiendra les sources des installations des applications que vous ajouterez à votre installation.
Boot: Ce répertoire contient les images WIM et ISO WinPE de démarrage, c’est ici qu’il faudra récupérer le CD de démarrage permettant d’accéder au partage depuis le poste à installer
Captures: Ce répertoire est autorisé en écriture et recevra les captures effectuée par MDT (ce sujet sera abordé dans un article ultérieur)
Control: Ce répertoire contient tous les fichiers de configuration utilisé pour personnalisé votre installation, c’est principalement un ensemble de fichier XM (d’où la nécessité d’avoir MSXML installé sur le poste)
Operating Systems: Il contient toutes les sources d’installation des systèmes d’exploitations que vous aurez ajouté à MDT.
Out-of-Box Drivers: A l’intérieur de ce répertoires sont copié tous les pilotes ajouté à MDT et utilisé par votre installation.
Packages: Ce répertoire est utilisé pour stocké les patchs de sécurité et les packs de langues que vous aurez ajouté dans MDT.
Scripts: Ce répertoire est le « noyau » d’exécution de MDT, il contient tous les scripts exécuté lors du déploiement.
Tools: Ce répertoire contient les outils supplémentaire (comme USMT) ajouté à MDT.
Servicing:
Templates:
USMT: Ce répertoire n’a pas d’utilité dans notre cas. Il est utilisé pour gérer USMT (User State Migration Tool) qui permet la conservation d’une partie ou de tout les paramètres utilisateur. Comme nous sommes en train de réaliser une installation de Windows, notre cas ne s’applique pas.

Dans le monde du déploiement de Windows, on peut dire qu’il existe 3 types d’images :

  • Thin image : appelée image mince en français, celle-ci ne contient que le système d’exploitation, elle est souvent issus de l’ISO Windows ou capturer depuis un poste de référence avec les mises à jour Windows. Elle présente l’avantage d’être plus légère et rapide à déployer mais nécessite l’installation de logiciels par un autre moyen (GPO, scripts, outils tiers, MDT …).
  • Thick image : appelée image lourde en français, elle contient le système d’exploitation ainsi que l’ensemble des logiciels nécessaires, cette image est plus grande en termes de taille mais permet une mise en service plus rapide du poste lors de déploiement. Le principal inconvénient est que l’image doit être refaite à chaque mise à jour ou changement de logiciel.
  • Hybrid image : c’est un compromis entre les deux qui va contenir par exemples l’antivirus, firefox, office …


Personnellement, j’utilise avec MDT des images de type Thin et je pousse l’installation des logiciels et mises à jour Windows en utilisant des tâches dans la séquence de déploiement. Cette solution permet de mettre à jour régulièrement l’image Windows et les logiciels sans avoir besoin de refaire une image de référence tous les ans par exemple.

  • Commencez par monter l'image ISO sur votre machine puis dans powershell entrer la commande suivante en prenant soin de modifier la lettre du lecteur ici “D” par la bonne lettre.
cd D:
  • Ensuite, pour afficher la liste des images disponibles dans votre fichier, utilisez la commande ci-dessous avec DISM, en adaptant si besoin le chemin vers le fichier ESD :
dism /Get-WimInfo /WimFile:D:/sources/install.esd
  • Par exemple, pour extraire l'image xxxxxxx, ce qui correspond à l'index n°6 ça serra :
dism /export-image /SourceImageFile:D:\sources\install.esd /SourceIndex:6 /DestinationImageFile:C:\sources\install.wim /Compress:max /CheckIntegrity
  • Lorsque l'opération est terminée, vous obtiendrez un fichier WIM à l'emplacement de destination indiqué.

Il ne vous reste plus qu'à l'intégrer à votre WDS ou a l'utiliser pour MDT et à déployer Windows !

  • Extraire l'ISO d'origine de Windows
  • Supprimer le fichier install.esd dans le dossier extrait .\sources\
  • Copier dans le dossier .\sources\ le fichier install.win précédemment converti a partir de install.esd dans l'étape Convertir install.esd to install.wim
  • Re-créer un fichier ISO avec les modifications
  • Monter la nouvelle iso sur la machine MDT
  • Clic droit sur le dossier souhaité dans MDT puis Import Operating System sélectionner le lecteur sur lequel le montage à été fait.
  • Nommer l'import :
Windows_10_Pro_FR_x64_1903
ou
Windows_10_Pro_FR_x64_1909
ect ...

Ajout du SE

Dans l’assistance, vous avez trois choix:

  • Full set of source files: Cette option est utilisé pour l’ajout d’un CD/DVD d’installation standard (i.e. celui de Microsoft) de Windows, il gère toutes les versions de Windows (Serveur comme station de travail) depuis Windows XP (je n’ai jamais testé Windows 200 mais il est possible que cela fonctionne). C’est l’option que nous utiliserons ici.
  • Custom image file: Cette option est utilisée si vous avez réaliser une image WIM sysprepée (c’est important) d’un poste que vous utiliserez en tant que Master.
  • Windows Deployment Services images: Cette option est utilisée si vous souhaitez héberger vos images sur un serveur WDS (Windows Deployment Service). Ces images peuvent être des captures WDS.

Extraire les fichiers suivantes situés dans install.wim de ISO install Win10 :

BCP47Langs.dll
BCP47mrm.dll

Puis copier dans \Windows\system32\ de WinPE.wim en suivant la procédure http://wiki.srvserveur.com/prive/windows/microsoft-deployment-toolkit#modif_winpe_iso

BCP47Langs.dll
BCP47mrm.dll

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-mount-and-customize

Copie de ISO WinPE :

Montage de ISO WinPE :

Dism /Mount-Image /ImageFile:"C:\Temp\Export\winpe.wim" /index:1 /MountDir:"C:\Temp\Mount\Current"

Export de ISO WinPE modifié :

Dism /Unmount-Image /MountDir:"C:\Temp\Mount\Current" /commit

http://www.msnloop.com/creer-une-cle-uefi-pour-mdt-2013/
L'utilisation de RUFUS sera le meilleur moyen et le plus rapide
Mode GPT et UEFI

NetKVM/ - Virtio network driver
viostor/ - Virtio block driver
vioscsi/ - Virtio Small Computer System Interface (SCSI) driver
viorng/ - Virtio RNG driver
vioser/ - Virtio serial driver
Balloon/ - Virtio memory balloon driver
qxl/ - QXL graphics driver for Windows 7 and earlier. (build virtio-win-0.1.103-1 and later)
qxldod/ - QXL graphics driver for Windows 8 and later. (build virtio-win-0.1.103-2 and later)
pvpanic/ - QEMU pvpanic device driver (build virtio-win-0.1.103-2 and later)
guest-agent/ - QEMU Guest Agent 32bit and 64bit MSI installers
qemupciserial/ - QEMU PCI serial device driver
*.vfd VFD floppy images for using during install of Windows XP

Outils

Outils permettant le test et la modification des fenêtres de déploiement :
https://www.supinfo.com/articles/single/5884-microsoft-deployment-toolkit
Partie Modification des variables dynamiques

MDT Wizard Studio
A télécharger pour éditer les fenêtres de déploiement :
https://github.com/DeploymentArtist/SWP1

(Méthode choisie pour mon MDT grâce à son intégration parfaite dans les fenêtres de déploiement WinPE)

https://social.technet.microsoft.com/Forums/en-US/7f8a272c-6306-4361-8b54-01837f25362e/add-custom-pane-to-select-disk-in-mdt-wizard?forum=mdt

Aperçu de la fenêtre du choix du disk :

Editer le fichier “DeployWiz_Definition_ENU.xml” situé dans :

\\192.168.10.30\DeploymentShare$\Scripts\

Ajouter le code suivant :

<Pane id="TargetDisk" reference="DeployWiz_TargetDisk.xml">
</Pane>

Créer le fichier “DeployWiz_TargetDisk.vbs” :

DeployWiz_TargetDisk.vbs
' // ***************************************************************************
' // File:      DeployWiz_TargetDisk.vbs
' //
' // Version:   6.3.8456.1000
' //
' // Purpose:   Script methods used for the Target Disk UI
' //
' // ***************************************************************************

 
'This function is used to populate the select box
Function Disk_Initialization
Dim oOption2
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("SELECT * FROM Win32_DiskDrive")
 
For each objDisks in colDisks
Set oOption2 = document.createElement("OPTION")
 
oOption2.Text = objDisks.Index
oOption2.Value = objDisks.Index
	TargetDisk.Add(oOption2)
   'Wscript.Echo "Volume: "& vbTab &  objQuota.Index
   'Wscript.Echo "User: "& vbTab &  objQuota.Model
Next
 
 
End function
 
'This function is used to convert bytes into useful readable size
Function ConvertSize(byteSize)
	dim Size
	Size = byteSize
 
	Do While InStr(Size,",") 'Remove commas from size
		CommaLocate = InStr(Size,",")
		Size = Mid(Size,1,CommaLocate - 1) & _
		Mid(Size,CommaLocate + 1,Len(Size) - CommaLocate)
	Loop
 
	Suffix = " Bytes"
	If Size >= 1024 Then suffix = " KB"
	If Size >= 1048576 Then suffix = " MB"
	If Size >= 1073741824 Then suffix = " GB"
	If Size >= 1099511627776 Then suffix = " TB"
 
	Select Case Suffix
		Case " KB" Size = Round(Size / 1024, 1)
		Case " MB" Size = Round(Size / 1048576, 1)
		Case " GB" Size = Round(Size / 1073741824, 1)
		Case " TB" Size = Round(Size / 1099511627776, 1)
	End Select
 
	ConvertSize = Size & Suffix
End Function
 
'this function is used to show disk info about a selected disk
Function ShowDiskInfo
 
strSelectedIndex = ""
' Check all the Options of the ListBox
For i = 0 to (TargetDisk.Options.Length - 1)
' Check if the Current Option is Selected
			If (TargetDisk.Options(i).Selected) Then
			 ' Collect only the Selected Values
					strSelectedIndex = strSelectedIndex & TargetDisk.Options(i).Value & vbCrLf
			End If
	Next
 
	strComputer = "."
	Dim sMsg
	Dim sDiskSize
	Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colDiskInfo = objWMIService.ExecQuery ("SELECT * FROM Win32_DiskDrive WHERE Index=" & strSelectedIndex)
 
	For each objDiskInfo in colDiskInfo
		sDiskSize = ConvertSize(objDiskInfo.Size)
	  sMsg = "Disk Index: " & strSelectedIndex & vbCrLf & "Disk Size: " & sDiskSize  & vbCrLf & "Disk Model: " & objDiskInfo.Model & 
vbCrLf & "Disk Serial Number: " & objDiskInfo.SerialNumber
	  Msgbox(sMsg)
	Next
 
 
End function
 
'this function sets the variable in MDT for the deployment
Function SetTargetDisk
 
strTargetDiskIndex = ""
' Check all the Options of the ListBox
For i = 0 to (TargetDisk.Options.Length - 1)
' Check if the Current Option is Selected
			If (TargetDisk.Options(i).Selected) Then
			 ' Collect only the Selected Values
					strTargetDiskIndex = strTargetDiskIndex & TargetDisk.Options(i).Value & vbCrLf
			End If
	Next
 
	oEnvironment.Item("OSDDiskIndex") = strTargetDiskIndex
 
End Function

Puis créer le fichier “DeployWiz_TargetDisk.xml” :

DeployWiz_TargetDisk.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
 
' // ***************************************************************************
' //
' // Copyright (c) Microsoft Corporation.  All rights reserved.
' //
' // Microsoft Deployment Toolkit Solution Accelerator
' //
' // File:      DeployWiz_Definition_ENU.wsf
' //
' // Version:   6.3.8456.1000
' //
' // Purpose:   Main Client Deployment Wizard Defintion File
' //
' // ***************************************************************************
 
-->
<Wizard>
  <Global>
    <CustomScript>DeployWiz_TargetDisk.vbs</CustomScript>
  </Global>
  <Pane id="SelectTargetDIsk" title="Target Disk">
    <Initialization><![CDATA[ Disk_Initialization ]]></Initialization>
    <Body><![CDATA[
 
			<!-- Use the H1 Style for titles at the top of the page -->
			<H1>Specify the target disk for use in the deployment process.</H1>
 
			<table>
 
			<tr><td colspan=2>
			<H4>Target Disk</H4>
			</td></tr>
 
			<tr valign=top>
 
			<td width="80px">
			<img src="SD_HDD.png">
			</td>
 
			<td width="100%">
			<p>Select the target disk for deployment: </br>
			<SELECT NAME="TargetDisk" class=WideEdit language="vbscript" onchange="SetTargetDisk" >
			</SELECT>
			</p>
			<button style="background: inherit; background-image: url(SD_Help.png); width: 300px; height: 50px; border: 0px; font: 20px; font-weight: bold;" id="btnDiskInfo" title="View information about the selected disk." onclick="ShowDiskInfo" ondblclick="ShowDiskInfo">Click for show disk information</button>
 
 
			<input type=hidden NAME="UserLocale" class=WideEdit />
			<input type=hidden NAME="KeyboardLocale" class=WideEdit />
 
			</td>
			</tr>
 
			<tr><td colspan=2>
			<br>
 
			</td></tr>
 
			<tr valign=top>
 
			</tr>
			</table>
		]]></Body>
  </Pane>
</Wizard>

Conditions préalables

Vous devrez ajouter les composants suivants à votre image de démarrage:
Windows PowerShell (WinPE-PowerShell)
Windows PowerShell (WinPE-StorageWMI)
Microsoft .Net (WinPE Dot3Svc)


Mise en place :

  • Téléchargez la solution et extrayez le fichier zip
  • Créer un fichier Run_PS_Wizard.ps1 éditer le en entrant la commande suivante :
powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -File %SCRIPTROOT%\Choose_Disk_WPF_GUI\ChooseDiskWPF.ps1
  • Dans votre séquence de tâches, ajoutez les taches suivantes.
    • Run Command Line
      • Avec comme nom : ExecutionPolicy Unrestricted
      • Dans Command line : PowerShell.exe -Command “& {set-executionpolicy Unrestricted -Force}“
    • Run Command Line
      • Avec comme nom : Copy PowerShell.exe.config
      • Dans Command line : xcopy ”%DEPLOYROOT%\MDT_PS_Wizard\PowerShell.exe.config” “X:\Windows\System32\WindowsPowerShell\v1.0\” /Y
    • Ajouter un Group situé avant les étapes de partitionnement:
      • Avec comme nom : Choose Disk
    • Run Command Line
      • Avec comme nom : Check if there’s more than one Hard Disk
      • Dans Command line : Entrer la commande située dessous
    • Run PowerShell Script
      • Avec comme nom : Run Choose Disk to Install OS
      • Dans PowerShell script : %DEPLOYROOT%\Choose_Disk_WPF_GUI\Run_PS_Wizard.ps1

Commande pour Check if there’s more than one Hard Disk à insérer.

PowerShell.exe -NoProfile -Command "If ((Get-Disk | Where-Object -FilterScript {$_.Bustype -ne 'USB'}).Count -gt 1) {$TSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment;$TSEnv.Value('MoreThanOneHD') = $true}"


Avant installation des applications (Script) permettant l'installation/désinstallation/autre nécessaire pour l'installation complète de chaque application, il est nécessaire d’exécuter une commande désactivant la restriction d’exécution de script sur le system grâce à une tache (commande ci-dessous) cette commande est à modifier légèrement à la fin de l'installation pour restreindre de nouveau l’exécution de script sur le poste client.

PowerShell.exe -Command "& {set-executionpolicy Unrestricted -Force}"

CMD : Start script pour application

Quiet install command :

cmd.exe /c Install_7z.cmd

Working directory :

.\Applications\7-zip-1900

PowerShell : Start script pour application

Quiet install command :

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\AddAppRunOnce\AddAppRunOnce_PowerShell.ps1'"

Working directory :

C:\Windows\System32\WindowsPowerShell\v1.0

7-zip 1900

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\7-zip-1900\Install_7z.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Ccleaner 5.60.0.7307

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Ccleaner-5.60.0.7307\Install_Ccleaner.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

DirectX

cmd.exe /c Install_DirectX.cmd
.\Applications\DirectX

Filezilla

cmd.exe /c Install_FileZilla.cmd
.\Applications\FilezillaClient

Java8-32Bits 8.0.2210.11

cmd.exe /c Install_Java8x86.cmd
.\Applications\Java8-32Bits-8.0.2210.11

Java8-64Bits 8.0.2210.11

cmd.exe /c Install_Java8x64.cmd
.\Applications\Java8-64Bits-8.0.2210.11

Notepad++ 7.71

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Notepad++-7.71\Install_NotepadPlusPlus.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Recuva 1.53

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Notepad++-7.71\Install_Recuva.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

SystemExplorer 7.0.0

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\SystemExplorer-7.0.0\Install_SystemExplorer.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

TeamSpeak3 3.3.0

cmd.exe /c Install_TeamSpeak3.cmd
.\Applications\TeamSpeak3-3.3.0

TeamViewer 14.4.2669.0

cmd.exe /c Install_TeamViewer.cmd
.\Applications\TeamViewer-14.4.2669.0

VLC 3.0.7.1

cmd.exe /c Install_VLC.cmd
.\Applications\VLC-3.0.7.1

VNC-Viewer 6.19.715

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\VNC-Viewer-6.19.715\Install_VNCViewer.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

WinRar 5.71

cmd.exe /c Install_WinRar.cmd
.\Applications\WinRar-5.71

Brave

cmd.exe /c Install_Brave.cmd
.\Applications\Brave

Google Chrome 75.0.3770.142

cmd.exe /c Install_GoogleChrome.cmd
.\Applications\Google-Chrome-75.0.3770.142

Mozilla Firefox 68.0.1

cmd.exe /c Install_Firefox.cmd
.\Applications\Mozilla-Firefox-68.0.1

Opera 62.0.3331.99

cmd.exe /c Install_Opera.cmd
.\Applications\Opera-62.0.3331.99

CPU-Z

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\CPU-Z\Install_CPU-Z.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

CrystalDiskInfo

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\CrystalDiskInfo\Install_CrystalDiskInfo.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

CrystalDiskMark

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\CrystalDiskMark\Install_CrystalDiskMark.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Defraggler

cmd.exe /c Install_Defraggler.cmd
.\Applications\Defraggler

DesktopOK

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\DesktopOK\Install_DesktopOK.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

FilezillaServer

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\FilezillaServer\Install_FileZillaServer.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

InternetDownloadManager

cmd.exe /c Install_InternetDownloadManager.cmd
.\Applications\InternetDownloadManager

mRemoteNG 1.76.20.24615

cmd.exe /c Install_mRemoteNG.cmd
.\Applications\mRemoteNG-1.76.20.24615

Putty 0.72

cmd.exe /c Install_Putty.cmd
.\Applications\Putty-0.72

QNAPQsyncClient

cmd.exe /c Install_QNAPQsyncClient.cmd
.\Applications\QNAPQsyncClient

RemoteDesktopManagerEnterprise

cmd.exe /c Install_RemoteDesktopManager.cmd
.\Applications\RemoteDesktopManagerEnterprise

UltraISO

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\UltraISO\Install_UltraISO.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Wireshark 3.0.3

cmd.exe /c Install_Wireshark.cmd
.\Applications\Wireshark-3.0.3

YaTQA

cmd.exe /c Install_YaTQA.cmd
.\Applications\YaTQA

Steam 2.10.91.91

cmd.exe /c Install_Steam.cmd
.\Applications\Steam-2.10.91.91

Uplay 92.0.6280.0

cmd.exe /c Install_Uplay.cmd
.\Applications\Uplay-92.0.6280.0

Gimp

cmd.exe /c Install_Gimp.cmd
.\Applications\Gimp

OBS-Studio 23.2.1

cmd.exe /c Install_OBSStudio.cmd
.\Applications\OBS-Studio-23.2.1

PaintDotNet

cmd.exe /c Install_PaintDotNet.cmd
.\Applications\PaintDotNet-4.2

PhotoFiltre

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\PhotoFiltre\Install_PhotoFiltre.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

AddAppRunOnce

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\AddAppRunOnce\AddAppRunOnce_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

DeleteEdgeWelcome

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\DeleteEdgeWelcome\InstallEdgeWelcome.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

DisableCtrlAltSupprStartup

cmd.exe /c DisableCtrlAltSupprStartup.cmd
.\Applications\DisableCtrlAltSupprStartup

DisableLockScreenStartup

cmd.exe /c DisableLockScreenStartup.cmd
.\Applications\DisableLockScreenStartup

DisableRecentHistory

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\DisableRecentHistory\DisableRecentHistory_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

DisableSteamStartup

cmd.exe /c DisableSteamStartup.cmd
.\Applications\DisableSteamStartup

EnableRDPWin10

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\EnableRDPWin10\EnableRDP_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

EnableShowHiddenFiles

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\EnableShowHiddenFiles\EnableShowHiddenFiles_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

EnableShowHiddenFilesSystem

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\EnableShowHiddenFilesSystem\EnableShowHiddenFilesSystem_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

EnableShowKnownFileExt

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\EnableShowKnownFileExt\EnableShowKnownFileExt_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

NetFx3

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\NetFx3\Install_NetFX3.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

ResetWindowsSearch

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\ResetWindowsSearch\ResetWindowsSearch_PowerShell.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\MenuPerso\MenuPerso.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-AppsOnly

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -AppsOnly"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-Complet

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1'"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-OneDrive-Xbox

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -OneDrive -Xbox"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-OneDrive-Xbox-Cortana

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -OneDrive -Xbox -Cortana"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-OneDrive-Xbox-Cortana-Phone

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -OneDrive -Xbox -Cortana -Phone"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-OneDrive-Xbox-Phone

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -OneDrive -Xbox -Phone"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-SettingsOnly

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -SettingsOnly"
C:\Windows\System32\WindowsPowerShell\v1.0

Optimisation-Win10-Xbox-Phone

powershell.exe -ExecutionPolicy ByPass "& '%deployroot%\Applications\Optimisation-Win10-Complet\Windows10Decrapifier18XX_19XX_Complet.ps1' -Xbox -Phone"
C:\Windows\System32\WindowsPowerShell\v1.0

Script installation CMD

Install_App.cmd
@echo off
cls
echo --------------------------------------------------------
echo .
echo .
echo .      Installing App - Please Wait
echo .        This window will close once installed

REM Silent install for 64-bit
if defined ProgramFiles(x86) (
"%~dp0rcsetup153.exe" /S
)
if defined ProgramFiles(x86) exit
  
REM Silent install for 32-bit
"%~dp0rcsetup153.exe" /S

:: Wait for 20 seconds
ping -n 20 127.0.0.1 > NUL
 
exit

Script installation PowerShell

Install_App.ps1
# Script install App MDT
# ----------- Modifier variable apres cette ligne -----------
# ------------- Modify variable after this line -------------
 
$NameApp = "App"
$Installer32 = "App.exe"
$Installer64 = "App.exe"
$arguments = "/S"
$uninstaller32or64 = "App\Uninstall.exe"
$argumentsUninstall = "/S"
$Global:IsMsi = "0" #IsMsi = "0" or "1"
 
# --------------- Ne rien modifier apres cette ligne ---------------
# ------------- Do not modify anything after this line -------------
 
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$Global:IsCopyNeed = "0" # $CopyNeed = "0" or "1"
$SourceConfig = "$scriptPath\ConfigApp"
$DestinationConfig = "%AppData%\App"
$Global:DestinationConfig = "%AppData%_or_ProgramFiles\App"
$StartJob1 = "1" # $StartJob = "0" or "1"
$NameJob = "StopApp"
$ProcName = "AppProcName"
 
 
Write-Host "Debut installation $NameApp" -ForegroundColor Green
function CopyFilesToFolder ($fromFolder, $toFolder) {
    # Make sure the destination folder exists
	If(!(Test-Path $toFolder)){New-Item $toFolder -ItemType Directory -Force|Out-null}
	# Copy source folder contents to destination folder recursively
	Copy-Item "$fromFolder\*" -Destination "$toFolder" -recurse -force
}
 
function StartJob1PowerShell($NameJob1, $ProcName1) {
    Start-Job -Name "$NameJob1" -ScriptBlock {
        while($true) { Get-Process | where {$_.ProcessName -like "$using:ProcName1"} | Stop-Process; Start-Sleep -Seconds 10 }
    } -ArgumentList $ProcName1
}
 
# Uninstall
Write-Host "Uninstall $NameApp" -ForegroundColor Cyan
If ((Test-Path "${env:ProgramFiles(x86)}\$uninstaller32or64" -PathType Leaf) -or (Test-Path "${Env:ProgramFiles}\$uninstaller32or64" -PathType Leaf))
{
	If (Test-Path "${env:ProgramFiles(x86)}\$uninstaller32or64" -PathType Leaf)
	{
		Write-Host "TEST Desinstallation $NameApp ProgramFilesX86" -ForegroundColor Magenta
		If ($StartJob1 -eq "1"){ StartJob1PowerShell "$NameJob" "$ProcName"}
		$executableSupprFinal = "${env:ProgramFiles(x86)}\$uninstaller32or64"
		start-process $executableSupprFinal $argumentsUninstall -PassThru -Verb RunAs -Wait #-NoNewWindow
		Write-Host "Desinstallation $NameApp reussi" -ForegroundColor Yellow
	}
	elseif (Test-Path "${Env:ProgramFiles}\$uninstaller32or64" -PathType Leaf)
	{
		Write-Host "TEST Desinstallation $NameApp ProgramFiles" -ForegroundColor Magenta
		If ($StartJob1 -eq "1"){ StartJob1PowerShell "$NameJob" "$ProcName"}
		$executableSupprFinal = "${env:ProgramFiles}\$uninstaller32or64"
		start-process $executableSupprFinal $argumentsUninstall -PassThru -Verb RunAs -Wait #-NoNewWindow
		Write-Host "Desinstallation $NameApp reussi" -ForegroundColor Yellow
	}
	else
	{
		Write-Host "Desinstaller $NameApp introuvable" -ForegroundColor Red
	}
}
else
{
	Write-Host "$NameApp NON presente" -ForegroundColor Green
}
# Suppression du Job créer
If ($StartJob1 -eq "1") {
	If ( [bool](get-job -Name $NameJob -ea silentlycontinue) ) {
		Remove-Job -Name $NameJob -Force
	}
	Start-Sleep -Seconds 5
}
 
# Install
Write-Host "Installation $NameApp" -ForegroundColor Cyan
If (Test-Path "${env:ProgramFiles(x86)}")
{
	If ($StartJob1 -eq "1"){ StartJob1PowerShell "$NameJob" "$ProcName"}
	$Installer = $Installer64
	$DestinationConfig = "${env:ProgramFiles}\$DestinationConfig"
	$InstallerFinal = "$scriptPath\$Installer"
	If ($IsMsi -eq "1") {
		start-process msiexec.exe -ArgumentList '/i',$InstallerFinal,$arguments -PassThru -Verb RunAs -Wait #-NoNewWindow
	}
	Else 
	{
		start-process $InstallerFinal $arguments -PassThru -Verb RunAs -Wait #-NoNewWindow
	}
}
Else 
{
	If ($StartJob1 -eq "1"){ StartJob1PowerShell "$NameJob" "$ProcName"}
	$Installer = $Installer32
	$DestinationConfig = "${env:ProgramFiles(x86)}\$DestinationConfig"
	$InstallerFinal = "$scriptPath\$Installer"
	If ($IsMsi -eq "1") {
		start-process msiexec.exe -ArgumentList '/i',$InstallerFinal,$arguments -PassThru -Verb RunAs -Wait #-NoNewWindow
	}
	Else 
	{
		start-process $InstallerFinal $arguments -PassThru -Verb RunAs -Wait #-NoNewWindow
	}
}
# Suppression du Job créer
If ($StartJob1 -eq "1") {
	If ( [bool](get-job -Name $NameJob -ea silentlycontinue) ) {
		Remove-Job -Name $NameJob -Force
	}
	Start-Sleep -Seconds 5
}
 
# Copy Config Item from Deployroot
If ($IsCopyNeed -eq "1") {
	Start-Sleep -Seconds 2
	Write-Host "Copie auxiliere $NameApp" -ForegroundColor Cyan
	CopyFilesToFolder "$SourceConfig" "$DestinationConfig"
}
 
Write-Host "Fin install $NameApp" -ForegroundColor Green

En premier nous allons exporter la configuration des associations extension des fichiers sur notre machines témoin.

dism /online /export-DefaultAppAssociations:C:\Users\%username%\Desktop\DefaultAppAssociations.xml

Maintenant nous allons modifier légèrement la commande de base de l'import pour l'intégrer dans l'une des taches d'une TaskSequence de notre serveur MDT.
Pour rappelle la commande de base pour l'import est (exemple ci-dessous) :

dism /online /import-DefaultAppAssociations:C:\Users\%username%\Desktop\DefaultAppAssociations.xml

Ajout de la tache :

  • Run Command Line
    • Avec comme nom : ImportDefaultAppAssociations
    • Comme Command Line : dism /online /import-DefaultAppAssociations:%SCRIPTROOT%\DefaultAppAssociations\DefaultAppAssociations.xml


Créer les dossiers suivant dans Out-of-Box Drivers :

  • WinPE x64
  • WinPE x86
  • Dell
  • ASUS
  • Hewlett-Packard
  • VMWare
  • QEMU

Exemple de get wmic

C:\WINDOWS\system32>wmic computersystem get model,name,manufacturer,systemtype
Manufacturer  Model           Name            SystemType
Dell Inc.     Latitude E7450   WINCMD-PC2  x64-based PC
%make%\%model%
Dell Inc.\Latitude E7450
%make% = Dell Inc.
%model% = Latitude E7450

Autres exemple :

wmic baseboard get product,Manufacturer

http://techgenix.com/Deploying-Windows-7-Part26/
https://emeneye.wordpress.com/2013/01/14/injecting-drivers-based-on-target-computer-model/
http://www.msnloop.com/gestion-des-pilotes-avec-mdt-2013-update-1/
https://www.ronnipedersen.com/wmi-query/
http://www.microsoft-desktop.com/2014/03/mdt-gestion-des-drivers-via-make-model/
https://web.sas.upenn.edu/jasonrw/2016/09/25/mdt-and-drivers/
https://nas.wuibaille.fr/wordpress/tuto-installation-et-mise-en-oeuvre-de-mdt/9/
https://deploymentresearch.com/mdt-2013-lite-touch-driver-management/
https://blogs.technet.microsoft.com/canitpro/2012/04/23/grer-les-drivers-dans-mdt-2010-partie-1-les-drivers-fournis-sous-forme-dapplication/

Out-Of-Box Folders
    Operating System
        Make
            Model
            Model…
        Make…
    Operating System…
Out-of-Box drivers
  OS Architecture
    Marque du poste
      Modèle du poste
      Modèle du poste
    Marque du poste
      Modèle...
  OS Architecture

Ajouter une étape Set Task Sequence Variable avec DriverGroup001 et sur Windows 10 x64\%Model%
ou
Si un seul model :
Ajouter une étape Set Task Sequence Variable avec DriverGroup001 et sur Windows 10 x64\%make%

Créer une nouvelle tache dans la task Sequence souhaitée au niveau de la partie Preinstall :

  • Nommer la tache exemple : Inject Drivers Dell - E6410
  • Dans Choose a selection profile : sélectionner le profile précédemment créer pour les drivers spécifiques de OS correspondant.
  • Onglet Options :
    • Ajouter une condition dans Add puis Query WMI

Permet de récupérer valeur par une fenêtre CMD :

wmic path win32_ComputerSystem get Model

Dans WMI namespace indiquer ceci :

root\cimv2

Dans WQL query indiquer ceci :

SELECT * FROM Win32_ComputerSystem WHERE Model LIKE '%Latitude E6410%'

Par exemple dans une config ordinateur personnalisée le Model de l'ordinateur n’apparaît pas car il n'est pas un model unique du marché dans ce cas nous allons utiliser une autres Classe WMI pour déterminer le Model de carte mère par exemple et indiquer à la séquence de taches d'injecter les drivers spécifiques que nous auront préalablement spécifier en créant un profil spécifique.

Suivre la meme procedure que précedemment dans Injection drivers automatisé mais à la fin indiquer les conditions ci dessous a la place des conditions précédentes.

Dans WMI namespace indiquer ceci :

root\cimv2

Dans WQL query indiquer ceci :

SELECT * FROM Win32_BaseBoard WHERE Product LIKE '%RAMPAGE V EDITION 10%'



Autres exemple de pilote spécifique :
Exemple de commande servant a déterminer la carte video utilisée :

wmic path win32_VideoController get name
query SELECT * FROM Win32_Videocontroller WHERE Name LIKE '%GeForce%'

Installation silecieuse a tester : Extract the driver avec 7zip par exemple

setup.exe -noeula -clean -noreboot /s
setup.exe -s -clean -noreboot


Exemple:

Select * FROM Win32_ComputerSystem WHERE Manufacturer LIKE "%Dell%" AND Model LIKE "%E6510%"

Le symbole % permet de faire une recherche sur les caracteres suivant et précedent.

Si vous etes dans une machine virtuelle avec VMware, pour faire votre test.

Select * FROM Win32_ComputerSystem WHERE Manufacturer LIKE "%VMware%" AND Model LIKE "%VMware%"

Les éléments du tuto sont tirés directement du super site :
http://www.systanddeploy.com/2018/02/powershell-tool-software-center-for-mdt.html

Voici une captures de l'outils final.


  1. Vous disposez d'un EXE et d'un fichier MDTSoftwareCenter_Configuration.xml situés sur le client.
  2. Le fichier xml est utilisé pour définir certaines informations comme le chemin de partage de déploiement.
  3. L'outil utilisera ce fichier pour se connecter au partage de déploiement après avoir exécuté le fichier (.exe).
  4. Ensuite, le contenu de votre partage de déploiement sera répertorié.
  5. Pour installer par exemple une application, cliquez sur l'application à installer et cliquez sur le bouton Installer.
  6. Ceci exécutera le processus MDT.


Dans votre partage de déploiement MDT :

Copiez les fichiers situés dans Copy in your Deployment Share\In Scripts dans le dossier Scripts de votre partage de déploiement MDT.

Sur le client :

Copiez les fichiers situés dans Copy on Client\On C à la racine de C:\
Copiez les fichiers situés dans Copy on Client\On desktop sur le bureau utilisateur.

http://www.systanddeploy.com/2019/01/create-your-own-mdt-finishaction.html

Cette étape va permettre d'indiquer au MDT et à la séquence de tache de ne rien effectuer comme action après avoir appuyer sur le BOUTON “Terminer

Modification du fichier Litetouch.wsf (FONCTION)

Partie Fonction Action
  • Copier la partie Sub Reboot puis renommer la fonction en Sub NothingToDo_Reboot par exemple.
  • Puis modifier la fonction pour que rien ne s’exécute en commentent les lignes nécessaires (Pour m'a par j'avais précédemment utiliser cette fonction pour exécuter un script PowerShell supplémentaire à la fin).
Ajout-Code1-Litetouch.wsf
Sub NothingToDo_Reboot
' Add/Edit by Vincent1890

	Dim o, oOS
 
	' Executer un script powershell
	' Copy logs and system files
	' oShell.Run("powershell.exe -noexit -windowstyle hidden -file NothingToDo_Reboot_Actions.ps1")

	' Reboot
	If oEnv("SystemDrive") = "X:" then
		' Nothing to do, exiting will reboot
	Else
		' Set oOS = GetObject("winmgmts:{(Shutdown)}//./root/cimv2").ExecQuery("select * from Win32_OperatingSystem where Primary=true")
		' For Each o in oOS
			' o.Win32Shutdown(6)
		' Next
	End if
 
End Sub

Modification du fichier Litetouch.wsf (Variable)

Partie création de la variable FinishAction supplémentaire
  • Toujours dans le fichier Litetouch.wsf, recherchez Select Case UCase (sFinishAction), et modifier comme ci-dessous:
Ajout-Code2-Litetouch.wsf
Select Case UCase(sFinishAction)
Case "SHUTDOWN"
	Shutdown
Case "CUSTOMFINISHNOTHINGTODO"
	NothingToDo_Reboot
Case "RESTART", "REBOOT"
	Reboot
Case "LOGOFF"
	Logoff
End Select
  • A partir de maintenant une variable FinishAction supplémentaire au NOM de : CUSTOMFINISHNOTHINGTODO pourra être utiliser dans n'importe quelle séquence de tâches ou dans le fichier customsettings.ini, FinishAction=CUSTOMFINISHNOTHINGTODO cette variable FinishAction va nous servir très vite, même directement dans la partie suivante du tuto.


Créez une nouvelle séquence de tâches configurée comme ci-dessous: Les élément a ajouter/sélectionner ci-dessous doivent être absolument respecté a la lettre

ID : CATALOG
Name : Catalog Installation
Type : séquence de tâches personnalisée


L'outil exécutera ce TS donc ajouter les éléments suivants dans votre nouvelle Task-Sequence dans l'ordre indiqué ci-dessous :

  • Install application
    • Avec comme nom : Install application
    • Et comme comme condition variables : Catalog_Value equals Applications
  • Run PowerShell Script
    • Avec comme nom : Install Package (Lag or updates)
    • Comme PowerShell script : %SCRIPTROOT%\Install_Packages.ps1
    • Comme condition variables : Catalog_Value equals Packages
  • Run PowerShell Script
    • Avec comme nom : Check for errors
    • Comme PowerShell script : %SCRIPTROOT%\Check_for_errors.ps1
  • Set Task Sequence Variable
    • Avec comme nom : TS-Variable-FinishAction
    • Task Sequence variable : FinishAction
    • Value : CUSTOMFINISHNOTHINGTODO


Si une utilisation de script Powershell est faite pour l'installation d'application les commandes suivantes doivent être ajoutées au début et fin de la Séquence de Tache pour autoriser l’exécution des scripts :
PowerShell.exe -Command "& {set-executionpolicy Unrestricted -Force}"

et

PowerShell.exe -Command "& {set-executionpolicy Restricted -Force}"


Lorsqu'une application est ajoutée par l'outil, il ajoute automatiquement des clés de registre. De cette façon, il les détectera la prochaine fois.

Il créer une clé regedit si celle ci n'est pas deja créer :

HKLM\Software\MDT_Catalog\Applications

Dans cette clé, chaque application installée créera une clé en utilisant le nom situé dans Applications.xml, voir ci-dessous.

Il créera également deux chaînes comme ci-dessous pour chaque application installée

Si un premier démarrage de l'outil MDT Software Center est fait avec clic droit “démarrage en tant que administrateur” la demande de mot de passe DeployementShare ne sera plus demandé ensuite sur le poste. (Modification du script faite par vincent1890 sur l'outil).
Problème actuelle avec l'outils :
  • Ajouter un écran de connexion dans l'outil, pour se connecter au partage de déploiement cela a été rectifier sur le github de vincent1890
  • Vérification des programmes déjà installer sur le pc client ne fonctionne pas bien.

Les problèmes ci dessus ne gène en rien l'utilisation et l'installation des applications ajouter au serveur MDT, les élément indiquer sont juste des optimisation de l'application PowerShell qui pourrait être ajouté/rectifié dans le future.

Net Framework

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse |
Get-ItemProperty -name Version,Release -EA 0 |
Where { $_.PSChildName -match '^(?!S)\p{L}'} |
Select PSChildName, Version, Release

or

cd "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP"
ls

Installation module :

Set-ExecutionPolicy Bypass
Install-Module -Name VcRedist
Import-Module -Name VcRedist

Téléchargement Local :

New-Item -Path C:\Temp\VcRedist -ItemType Directory
Get-VcList | Save-VcRedist -Path C:\Temp\VcRedist

Installation Pack local :

$VcList = Get-VcList
Install-VcRedist -Path C:\Temp\VcRedist -VcList (Get-VcList) -Silent

Téléchargement et création application automatiquement dans MDT :

$VcList = Get-VcList
Import-VcMdtApp -VcList $VcList -Path C:\Temp\VcRedist -MdtPath \\192.168.10.30\DeploymentShare$ -Language fr-FR -Silent

Création d'un BundlePack dans MDT :

New-VcMdtBundle -MdtPath \\192.168.10.30\DeploymentShare$ -Language fr-FR

FIXME

Ou trouver les logs MDT pendant et aprés le déploiement

Les logs MDT ne se trouvent pas au même emplacement en fonction des étapes

Avant le diskpart =⇒ X:\MININT\SMSOSD\OSDLOGS
Après le diskpart =⇒ C:\MININT\SMSOSD\OSDLOGS
Apres le déploiement =⇒ %WINDIR%\TEMP\DeploymentLogs
la lecture des fichiers de Logs se fera avec cmtrace ou trace32

Description Path
Deployent tasks log process %SystemDrive%\MININT\SMSOSD\OSDLOGS\BDD.log
Deployment task sequencer log %SystemDrive%\Users\ADMINI~1\AppData\Local\Temp\SMSTSLOG\SMSTS.LOG
Domain join log %SystemDrive%\Windows\DEBUG\NETSETUP.LOG
Windows 7 setup log %SystemDrive%\Windows\Panther\setupact.LOG
Windows 7 unattend log %SystemDrive%\Windows\Panther\UnattendGC\setupact.LOG
Deployent tasks log process in an other folder %SystemDrive%\Windows\TEMP\DeploymentLogs\BDD.LOG
Deployment task sequencer log in an other folder %SystemDrive%\Windows\TEMP\SMSTSLog\SMSTS.LOG

Other log files you may want to look for:

ZTIApplications.log – When troubleshooting application installs
ZTIDrivers.log – When troubleshooting MDT Driver injection
ZTIDomainJoin.log – When troubleshooting joining the domain

https://www.youtube.com/watch?v=-hWQbYToDjA
https://gal.vin/posts/build-and-capture-windows-10-2004-20h1-reference-image/
https://docs.microsoft.com/en-us/mem/configmgr/mdt/release-notes
https://docs.microsoft.com/fr-fr/mem/configmgr/mdt/
https://docs.microsoft.com/fr-fr/windows/deployment/deploy-windows-mdt/create-a-windows-10-reference-image
https://docs.microsoft.com/fr-fr/windows/deployment/deploy-windows-mdt/prepare-for-windows-deployment-with-mdt
https://deployadmin.com/2019/04/24/installation-de-microsoft-deployment-toolkit-mdt/
http://www.msnloop.com/les-logs-lies-a-linstallation-de-windows/
https://www.google.com/search?q=installation+et+la+configuration+de+base+d%27un+MDT&oq=installation+et+la+configuration+de+base+d%27un+MDT&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8
http://www.msnloop.com/windows-10/
https://www.it-connect.fr/presentation-de-winpe/
https://docs.microsoft.com/fr-fr/windows/deployment/deploy-windows-mdt/deploy-windows-10-with-the-microsoft-deployment-toolkit
https://docs.microsoft.com/en-us/sccm/mdt/
https://helpcenter-cebox.wisper.io/docs/utilisation-de-lite-touch-pour-linstallation-de-vos-masters-mdt
http://www.msnloop.com/windows-10/
http://www.msnloop.com/installation-et-configuration-de-mdt-2013-update-1/
http://www.msnloop.com/deployer-windows-10-avec-mdt-2013-update-1/
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/add-multilingual-support-to-windows-setup
https://blog.infeeny.com/2019/01/28/mdt-nouvelle-version-disponible/
https://www.it-connect.fr/mdt-techniques-de-gestion-de-la-base-de-donnees/
https://www.it-connect.fr/mdt-introspection-des-sequences-de-taches/
https://www.it-connect.fr/mdt-creer-une-cle-usb-litetouch-bootable/
https://www.it-connect.fr/mdt-realiser-une-installation-autonome-a-partir-dun-media/
https://www.it-connect.fr/overview-mdt-wds-winpe/
https://www.it-connect.fr/custpe-realiser-un-dual-boot-winpe-ltiwindows/
https://www.it-connect.fr/configuration-avancee-de-mdt-2013/
https://www.it-connect.fr/windows-10-nouveautes-sur-le-deploiement/
https://openclassrooms.com/fr/courses/2356306-prenez-en-main-windows-server
https://openclassrooms.com/fr/courses/1733521-installez-et-deployez-windows-10
https://www.vkernel.ro/blog/creating-an-offline-mdt-deployment-media
https://www.supinfo.com/articles/single/7608-deployer-une-image-windows-10-avec-wds-mdt-2013
https://docs.microsoft.com/fr-fr/windows/deployment/deploy-windows-mdt/get-started-with-the-microsoft-deployment-toolkit
https://www.microsoft.com/en-us/download/details.aspx?id=54259
https://www.askme4tech.com/building-custom-windows-iso-mdt-2013
https://www.petri.com/deploy-windows-10-using-mdt-wds-part-1-create-mdt-deployment-share
https://docs.microsoft.com/fr-fr/windows-hardware/get-started/adk-install#winADK
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-add-packages--optional-components-reference https://www.supinfo.com/articles/single/5884-microsoft-deployment-toolkit
http://www.systanddeploy.com/2018/01/mdt-ps-wizard-all-mdt-wizards-in-one.html
https://labo-microsoft.supinfo.com/articles/mdt_2010_-_initiation/2/
https://win10.guru/windows-deployment-with-mdt-part-5-add-disks-and-partitions/
https://www.it-connect.fr/gestion-des-applications-dans-mdt/
https://www.it-connect.fr/mdt-integration-dapplications/
https://www.manageengine.com/products/desktop-central/software-installation/windows-software.html
https://www.it-connect.fr/gestion-des-applications-dans-mdt/
https://deploymentresearch.com/building-the-perfect-windows-server-2019-reference-image/
https://github.com/DeploymentResearch/DRFiles/blob/master/Scripts/Install-MicrosoftVisualC%2B%2Bx86x64.wsf
https://www.toutwindows.com/ws2019-installation/
https://docs.microsoft.com/fr-fr/windows/configuration/configure-windows-10-taskbar
https://docs.microsoft.com/fr-fr/windows/configuration/start-layout-xml-desktop
https://nathanblasac.com/deploy-a-custom-start-layout-configuration-policy-via-intune-windows-10-1809-a4ed72875c08
https://blog.piservices.fr/post/2013/06/06/Installation-de-Windows-(x64)-sur-une-partition-GPT
https://emeneye.wordpress.com/2017/04/25/automate-the-process-of-building-and-capturing-a-windows-10-1703-reference-image-building-the-task-sequence/
https://rdr-it.com/convertir-un-fichier-esd-en-wim/
https://www.powershellgallery.com/packages?q=Tags%3A%22MDT%22
https://www.powershellgallery.com/packages/LatestUpdate/3.0.171
https://www.experteam.fr/mdt-monitoring-deployment-success-error-mail-notification
https://www.pdq.com/blog/secure-password-with-powershell-encrypting-credentials-part-2/
https://interworks.com/blog/trhymer/2013/07/08/powershell-how-encrypt-and-store-credentials-securely-use-automation-scripts/
https://mdtguy.wordpress.com/2018/01/19/installing-adobe-acrobat-reader-dc-with-mdt/
https://blog.metsys.fr/powershell-et-le-monitoring-mdt/
https://deploymentbunny.com/2011/05/22/things-you-should-know-undocumented-properties-in-mdt-2010-update-1/
https://ecirtam.net/autoblogs/autoblogs/wwwitconnectfr_d5aed39c99b70ef3cb29dd221068f246f80c7098/?D%C3%A9buter-avec-MDT-2013
http://www.msnloop.com/deployer-des-applications-avec-mdt-2013/
http://www.msnloop.com/microsoft-edge-pour-les-entreprises-nouveautes-et-roadmap/
https://learning.rdr-it.com/course/deploiement-dimage-windows/
https://4sysops.com/archives/using-the-microsoft-deployment-toolkit-mdt-as-a-portable-application/
https://jm2k69.github.io/2017/07/Create-Master-MDT-Reference.html
https://docs.stealthpuppy.com/docs/vcredist/install
https://rdr-it.com/mdt-installation-configuration-microsoft-deployment-toolkit/
https://www.google.com/search?q=mdt+rst+driver+for+nvme&oq=MDT+RST+drivers+for+Nvme&sclient=gws-wiz-serp

Variable à modifier pour selection : OSDisk ou OSDDiskIndex

Ensemble des 3 prochains liens est prometteur edit le 2019-12-11 :
https://social.technet.microsoft.com/Forums/en-US/7f8a272c-6306-4361-8b54-01837f25362e/add-custom-pane-to-select-disk-in-mdt-wizard?forum=mdt
http://www.systanddeploy.com/2016/07/understanding-mdt-wizards.html
http://www.systanddeploy.com/2016/08/create-your-own-mdt-wizard.html

Prometteur et jolie mais powershell donc integration je comprend pas edit le 2019-12-09 :
Choose a Disk to Install Windows on using WPF and PowerShell | Me, Myself and IT
https://emeneye.wordpress.com/2018/12/25/choose-a-disk-to-install-windows-on-using-wpf-and-powershell/

Autres a trier :
https://gallery.technet.microsoft.com/MDT-Wizard-Display-some-f44ce0b2
https://specopssoft.com/blog/multiple-drives-causes-a-deployment-error/
https://serverfault.com/questions/612932/mdt-choose-specific-partition-to-install-windows-on
https://serverfault.com/questions/825411/how-to-manually-select-a-specific-disk-in-the-udi-wizard-when-using-mdt-2013
https://archive.codeplex.com/?p=mdtwizardstudio
http://www.systanddeploy.com/2016/08/create-your-own-mdt-wizard.html
https://www.it-connect.fr/overview-mdt-wds-winpe/
https://www.it-connect.fr/deploiement-doffice-avec-office-deployment-tool-odt/

User driven installation (UDI) - Microsoft Deployment Toolkit | Microsoft Docs
https://docs.microsoft.com/en-us/configmgr/mdt/user-driven-installation-developers-guide?redirectedfrom=MSDN

Integrating UDI into your SCCM OSD Task Sequences - TechNet Articles - United States (English) - TechNet Wiki
https://social.technet.microsoft.com/wiki/contents/articles/25739.integrating-udi-into-your-sccm-osd-task-sequences.aspx

MDT 2012 Update 1: UDI “Build Your Own Pages” – Michael Niehaus&#39; Windows and Office deployment ramblings
https://blogs.technet.microsoft.com/mniehaus/2012/08/01/mdt-2012-update-1-udi-build-your-own-pages/

elekgeek/MDT-Disk-Selector
https://github.com/elekgeek/MDT-Disk-Selector

Multiple Drives Causes a Deployment Error | Specops Software
https://specopssoft.com/blog/multiple-drives-causes-a-deployment-error/

Windows Deployment with MDT – Part 5: Add Disks and Partitions – Win10.Guru
https://win10.guru/windows-deployment-with-mdt-part-5-add-disks-and-partitions/

Script pour rendre ServiceUI.exe plus facile à utiliser pour les interfaces utilisateur personnalisées OSD - Les gars du déploiement
https://blogs.technet.microsoft.com/deploymentguys/2015/07/06/script-to-make-serviceui-exe-easier-to-use-for-osd-custom-user-interfaces/

Is there a way to add a task sequence to select a specific drive to format? : MDT
https://www.reddit.com/r/MDT/comments/9fvaqz/is_there_a_way_to_add_a_task_sequence_to_select_a/

Dynamically Select SSD Drive for OS Installation - Vacuum Breather
https://www.vacuumbreather.com/index.php/blog/item/72-dynamically-select-ssd-drive-for-os-installation

MDT - Choix du disque cible
https://social.technet.microsoft.com/Forums/fr-FR/61ef3881-a5f6-4a3e-ac36-9953a9ec89cc/mdt-choix-du-disque-cible?forum=win7fr

MDT Disk Partitioning
https://social.technet.microsoft.com/Forums/en-US/fe7a8e24-af1d-4f2a-b314-f4c3f2a3259a/mdt-disk-partitioning?forum=mdt

deploiement MdT 2010 : est ce possible de changer une variable de la Task sequence afin de conserver la partition data
https://social.technet.microsoft.com/Forums/fr-FR/bcd9441d-01f9-4951-8504-9fcdb7045fbe/deploiement-mdt-2010-est-ce-possible-de-changer-une-variable-de-la-task-sequence-afin-de-conserver?forum=win7fr

OSD - Live from the field my &#39;Best Practices&#39; for Operating System Deployment - renshollanders.nl
http://renshollanders.nl/2014/01/osd-live-from-the-field-my-best-practices-for-operating-system-deployment/

select disk number mdt - Recherche Google
https://www.google.com/search?q=select+disk+number+mdt&oq=select+disk+number+mdt&aqs=chrome..69i57.13475j0j7&sourceid=chrome&ie=UTF-8

MDT Disk Selector - Recherche Google
https://www.google.com/search?sxsrf=ACYBGNTxir-0QZTTy5NpmThk9uIzEoyzqg%3A1575927288890&ei=-L3uXeWCNueBjLsPy5iosAs&q=MDT+Disk+Selector&oq=MDT+Disk+Selector

Choisissez un disque pour installer Windows en utilisant WPF et PowerShell | Moi, moi-même et l&#39;informatique
https://emeneye.wordpress.com/2018/12/25/choose-a-disk-to-install-windows-on-using-wpf-and-powershell/#comment-2104

WinPE: Adding Windows PowerShell support to Windows PE | Microsoft Docs
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/winpe-adding-powershell-support-to-windows-pe

Creating Custom Windows PE from ADK 1903 | JDeployment
https://jayrbarrios.com/2019/10/07/creating-custom-windows-pe-from-adk-1903/

ZTISelectBootDisk.wsf | Keith&#39;s Consulting Blog
https://keithga.wordpress.com/2013/09/18/ztiselectbootdisk-wsf/

ZTISelectBootDisk.wsf nouveau avec BusType | Blog de consultation de Keith
https://keithga.wordpress.com/2017/10/10/ztiselectbootdisk-wsf-new-with-bustype/

Export :

En premier nous allons exporter la configuration des associations extension des fichiers sur notre machines témoin.

dism /online /export-DefaultAppAssociations:C:\Users\%username%\Desktop\DefaultAppAssociations.xml

Import :

Maintenant nous allons modifier légèrement la commande de base de l'import pour l'intégrer dans l'une des taches d'une TaskSequence de notre serveur MDT.
Pour rappelle la commande de base pour l'import est (exemple ci-dessous) :

dism /online /import-DefaultAppAssociations:C:\Users\%username%\Desktop\DefaultAppAssociations.xml

Ajout de la tache :

  • Run Command Line
    • Avec comme nom : ImportDefaultAppAssociations
    • Comme Command Line : dism /online /import-DefaultAppAssociations:%SCRIPTROOT%\DefaultAppAssociations\DefaultAppAssociations.xml



<WRAP half column>1...</WRAP>
<WRAP half column>2...</WRAP>
  • prive/windows/microsoft-deployment-toolkit.1726054667.txt.gz
  • Dernière modification : 2024/09/11 13:37
  • (modification externe)