Ceci est une ancienne révision du document !
Microsoft Deployment Toolkit (MDT)
Installation basée sur MDT v8456
Installer adksetup.exe :
Puis
Installer adkwinpesetup.exe :
Puis
Installer Microsoft Shared Computer Toolkit 2013 (8456) - (MDT)
https://docs.microsoft.com/en-us/mem/configmgr/mdt/release-notes
Puis
Installer Le correctif de bug Window System Image Manager (WSIM)
https://docs.microsoft.com/en-us/windows-hardware/get-started/what-s-new-in-kits-and-tools#windows-system-image-manager-known-issue
https://docs.microsoft.com/en-us/windows-hardware/get-started/what-s-new-in-kits-and-tools
v2004 - 20H2
https://oofhours.com/2020/06/03/mdt-build-8456-needs-an-update-for-windows-10-2004/
https://microsofttouch.fr/default/b/js/posts/mdt-une-mise-a-jour-de-mdt-8456-pour-supporter-l-adk-de-windows-10-2004#:~:text=Microsoft%20vient%20de%20publier%20un,d%C3%A9ploiement%20de%20syst%C3%A8mes%20d'exploitation.
https://gal.vin/2020/03/25/build-and-capture-windows-10-2004-20h1-reference-image/
https://www.youtube.com/watch?v=-hWQbYToDjA
https://askme4tech.com/how-prepare-mdt-place-upgrade-windows-10-2004
https://docs.microsoft.com/fr-fr/windows-hardware/get-started/adk-install
https://docs.microsoft.com/fr-fr/windows/deployment/deploy-whats-new
Win11
https://oofhours.com/2021/07/06/using-the-windows-11-adk-with-mdt/
Ouvrir Deployment Workbench
MDT Wizard Studio
A télécharger pour éditer les fenêtres de déploiement future :
https://github.com/DeploymentArtist/SWP1
Dossier Reseau
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.
Ajout d’un système d’exploitation
Type image SE importé
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.
Convertir install.esd to install.wim
- 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 !
Import Image Win10 dans Operating System
- 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.
WinPE ISO
Ajout de Powershell et addons dans WinPE ISO
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
Modif WinPE ISO
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
Création USB WinPE (ISO)
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
Drivers Virtio ISO
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
Ajout/Modification fenêtre de déploiement
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
Ajouter CHOIX DU DISK 1ere Possibilités avec fichier vbs
(Méthode choisie pour mon MDT grâce à son intégration parfaite dans les fenêtres de déploiement WinPE)
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>
Ajouter CHOIX DU DISK 2ème Possibilité interface WPF and PowerShell
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}"
Application
Pré-install application
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}"
Exemple utilisation
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
Application de base
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
Navigateurs
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
Specifiques
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
Jeux
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
Images et Videos
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
Scripts
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
Optimisation Win10
MenuPerso
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
VcRedists
Exemple script installation
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
Associations extensions application
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
Drivers
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%
—
Injection drivers automatisé
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%'
Injection Drivers automatisé spécifiques
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%"
Software Center for MDT (Add-App after install)
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
Télécharger la dernier version de l'outil :
Explication en vidéos (anglais) de l'outils :
https://www.youtube.com/watch?v=ZIRjsWQ-9yc&feature=emb_logo
https://www.youtube.com/watch?v=ztPhZve9Zkc&feature=emb_logo
Explication Outil d'interaction - Partage de déploiement :
- Vous disposez d'un EXE et d'un fichier MDTSoftwareCenter_Configuration.xml situés sur le client.
- Le fichier xml est utilisé pour définir certaines informations comme le chemin de partage de déploiement.
- L'outil utilisera ce fichier pour se connecter au partage de déploiement après avoir exécuté le fichier (.exe).
- Ensuite, le contenu de votre partage de déploiement sera répertorié.
- Pour installer par exemple une application, cliquez sur l'application à installer et cliquez sur le bouton Installer.
- Ceci exécutera le processus MDT.
Fichier a copier sur Serveur MDT et PC client
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.
Ajouter d'une nouvelle action FinishAction au serveur MDT
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.
Nouvelle Séquence de tâches sur MDT :
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
PowerShell.exe -Command "& {set-executionpolicy Unrestricted -Force}"
et
PowerShell.exe -Command "& {set-executionpolicy Restricted -Force}"
Comment l'outil détecte-t-il qu'un logiciel est installé ou avec une version différente ?
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
- 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.
Autres
Vérification package on system
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
Install VcRedist et ajout automatique d'application MDT VcRedist
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
Logs
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
Sources :
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
Dart
https://rdr-it.com/dart-configuration-integration-mdt/
https://rdr-it.com/en/dart-configuration-and-integration-with-mdt/
https://execmgr.net/2016/02/02/dart-remote-control-winpe-the-nice-way/
https://deploymentresearch.com/adding-dart-to-configmgr-boot-images-and-starting-it-earlier-than-early/
https://docs.microsoft.com/fr-fr/archive/blogs/alex_semi/dart-remote-recovery-starts-too-late-in-your-osd-mdt-deployment-here-is-the-fix
Partie Erreur
https://winxperts4all.at/index.php/software/61-microsoft-deployment-tool-mdt/1146-mdt-2013-u2-built-in-apps-entfernen
https://stackoverflow.com/questions/19957161/add-type-load-assembly-from-network-unc-share-error-0x80131515
http://www.systanddeploy.com/2018/01/mdt-ps-wizard-all-mdt-wizards-in-one.html
https://gallery.technet.microsoft.com/MDT-PS-Wizard-4e6cf60b
https://gaby277.developpez.com/Tutoriels/utiliser-WinPE-pour-le-depannage/
http://www.msnloop.com/windows-adk-1903-est-disponible/
https://charbelnemnom.com/2017/10/how-to-create-a-custom-winpe-boot-image-with-powershell-support-powershell-deploy-windowsserver/
https://jayrbarrios.com/2019/10/07/creating-custom-windows-pe-from-adk-1903/
https://www.osdeploy.com/blog/winpe-10-1809-wpf-dramarama
Wsus :
https://www.virtuallyboring.com/deploy-configure-wsus-server-2012-r2/
https://emeneye.wordpress.com/2017/05/05/automate-the-process-of-building-and-capturing-a-windows-10-1703-reference-image-the-customsettings-ini-rules/
https://rdr-it.com/mdt-installer-mises-a-jour-wsus/
Select Disk mdt
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' 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 'Best Practices' 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'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'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/
Install Silent MSI
https://sourceforge.net/projects/msi-installers/files/
https://blog.techygeekshome.info/2018/03/msi-installers-silent-distribution/
https://www.supinfo.com/articles/single/5873-deploiement-applications-avec-mdt-deployement-shares#idm46133027773216
http://leblogosd.wuibaille.fr/packages/
https://www.it-connect.fr/comment-supprimer-les-applications-pre-installees-sur-windows-10/
https://www.it-connect.fr/mdt-introspection-des-sequences-de-taches/
https://www.advancedinstaller.com/user-guide/msiexec.html
https://www.novatec-gmbh.de/en/blog/windows-silent-install-parameters/
Inno-Setup
https://jrsoftware.org/ishelp/index.php?topic=setupcmdline
NSIS
https://nsis.sourceforge.io/Docs/Chapter4.html#4.12
Install Monitoring
Erreur MDT
Épingler a la bar de tache
Tuto mdt parfait
Sommaire
MDT 2013 – Présentation
Mettre en oeuvre le service PXE pour un bios UEFI
MDT 2013 – Installation (partie 1)
MDT 2013 – Installation (partie 2)
MDT 2013 – Installation (partie 3)
Forum Microsoft MDT
https://social.technet.microsoft.com/Forums/en-US/home?forum=mdt
https://social.technet.microsoft.com/Forums/en-US/home?forum=mdt
VcRedists création d'application Visual C++ automatiquement dans MDT
https://msendpointmgr.com/2016/02/29/install-visual-c-redistributable-applications-with-powershell-in-mdt/
https://www.powershellgallery.com/packages/VcRedist/2.0.183
https://github.com/aaronparker/VcRedist
https://docs.stealthpuppy.com/docs/vcredist/
https://stealthpuppy.com/vcredist-powershell-module/
Transfert données utilisateur
https://mdtguy.wordpress.com/2013/04/10/time-is-money/
https://rdr-it.com/mdt-sauvegarde-profils-utilisateurs-usmt/
Config Auto CustomSettings.ini
https://www.techrepublic.com/article/mdt-automating-deployments-using-customsettings-ini/
https://deploymentbunny.com/2012/04/21/back-to-basic-customsettings-ini-explained/
https://deploymentresearch.com/creating-custom-variables-in-mdt-2013/
http://www.osd-couture.com/2016/06/cmmdt-how-to-set-variable-list-in.html
https://www.reddit.com/r/MDT/comments/gn54wz/command_line_litetouchvbs_custom_variables/
https://www.techrepublic.com/article/microsoft-deployment-toolkit-advanced-settings-for-automating-deployments-using-bootstrap-ini/
Upgrade/Update
https://gal.vin/2019/10/06/building-a-windows-10-1909-reference-image-with-mdt/
https://www.it-connect.fr/mise-a-niveau-vers-windows-10-via-mdt-2013-update-1/
https://www.nextofwindows.com/windows-10-1903-may-update-upgrade-via-mdt
https://messageops.com/in-place-windows-10-upgrade-via-mdt/
Monitoring
https://blog.metsys.fr/powershell-et-le-monitoring-mdt/
http://www.systanddeploy.com/2018/06/mdt-monitoring-web-with-bootstrap-part-1.html
http://www.systanddeploy.com/2018/06/mdt-monitoring-web-report-with.html
http://www.systanddeploy.com/2018/07/powershell-tool-mdt-light-monitor-new.html
http://www.systanddeploy.com/2017/03/mdt-monitoring-deployment-successerror.html
http://www.systanddeploy.com/2017/03/mdt-monitoring-wpf-deployment.html
Windows ADK 2004
Appli associations extensions
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>
https://www.it-connect.fr/installer-mdt-sur-windows-server-2022-pour-deployer-windows-11-22h2/
https://gal.vin/utils/mdt-setup/
https://gal.vin/posts/2022/deploy-windows-10-22h2/
https://gal.vin/posts/2022/sdio-and-mdt/
https://blog.wuibaille.fr/2023/05/cle-usb-uefi-avec-des-wim-go/
https://github.com/Digressive/MDT-Files


