Déployer une VM Hyper-V, contenant un Windows Server 2019 avec un ISO personnalisé
Cela nous permettra d'exécuter des scripts PowerShell.
Ouvrez PowerShell en Administrateur, puis tapez
# Autoriser l'exécution de scripts PowerShell
Set-ExecutionPolicy Unrestricted
# Installer Hyper-V et ses composants
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All
# Activer le pilotage à distance pour Hyper-V
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Set-WSManInstance WinRM/Config/WinRS -ValueSet @{MaxMemoryPerShellMB = 1024}
Set-WSManInstance WinRM/Config -ValueSet @{MaxTimeoutms=1800000}
Set-WSManInstance WinRM/Config/Client -ValueSet @{TrustedHosts="*"}
Set-WSManInstance WinRM/Config/Service/Auth -ValueSet @{Negotiate = $true}
Sélectionnez Autorisez pour tous
.
Attendez l'installation des modules Hyper-V. Vous aurez probablement besoin de redémarrer après.
Vous pouvez le télécharger depuis cette page : https://www.microsoft.com/fr-fr/evalcenter/evaluate-windows-server-2019
Téléchargement direct (fr-fr) : https://software-download.microsoft.com/download/pr/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_fr-fr_1.iso
Cela va installer Chocolatey et Terraform.
Ouvrez PowerShell en Administrateur, puis tapez
# Installer Chocolatey
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
# Installer Terraform
choco install Terraform -y
Vous pouvez le télécharger depuis cette page : https://www.majorgeeks.com/files/details/msmg_toolkit.html
Extrayez-le en utilisant 7-zip.
Vous pouvez le télécharger depuis cette page : https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install
Téléchargement direct : https://go.microsoft.com/fwlink/?linkid=2120254
Executez adksetup.exe
et désélectionnez tout sauf Deployment tools
. Installez.
Un fichier XML Unattend permet l'installation de Windows avec des valeurs prédéfinies. Dans mon cas, je voulais une installation 100% automatique, ainsi que quelques valeurs prédéfinies.
- Placez votre fichier ISO dans le dossier
ISO
du dossier MSMG Toolkit. - Exécutez
Start.cmd
dans le dossier MSMGT (privilèges Administrateur requis). - Acceptez les conditions d'utilisation en tapant
A
. - Extrayez le fichier ISO : Allez à
Source > Extract source from DVD ISO Image
en tapant1 3
puis tapez le nom de votre fichier ISO. - Vous pouvez fermer MSMGT en tapant
X
. Ouvrez le menu démarrer, descendez àWindows Kits
et ouvrezAssistant Gestion d'Installation
. - Cliquez sur
Fichier > Sélectionner l'image Windows
, naviguez àMSMGT > DVD > sources > install.wim
. Selectionnez la version de Windows que vous souhaitez personnaliser. Cela vous demandera de construire un catalogue. Acceptez (c'est un processus long, privilèges Administrateur requis). - Cliquez sur
Fichier > Nouveau fichier de réponse
. - Personnalisez votre fichier de réponse. Vous pouvez trouver le mien dans ce repo git (mot de passe d'Administrateur :
p@ssword1234
) ou vous pouvez trouver de la documentation ici : https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/automate-windows-setup ou https://www.windowscentral.com/how-create-unattended-media-do-automated-installation-windows-10 . - Sauvegardez votre fichier de réponse en
autounattend.xml
et placez-le dansMSMGT > DVD
. - Fermez l'Assistant Gestion d'installation et supprimez le fichier
MSMGT > DVD > sources > Install_Windows XXX.clg
, ou vous pouvez simplement le déplacer ailleurs pour éviter de le reconstruire.
- Naviguez à
MSMG > DVD > sources
. - Créez les dossiers
$OEM > $$ > Setup > Files
et$OEM > $$ > Setup > Scripts
. - Créez un nouveau fichier
SetupComplete.cmd
dans le dossierScripts
. - Remplissez-le en utilisant le modèle suivant :
@echo off
<VOTRE_COMMANDE_ICI>
rd /q /s "%WINDIR%\Setup\Files"
del /q /f "%0"
- Remplacez la deuxième ligne par votre commande cmd personnalisée. Je vous suggère de créer un script PowerShell dans le dossier
Files
et l'appeler en utilisantpowershell -NoProfile -NonInteractive -ExecutionPolicy Bypass "%WINDIR%\Setup\Files\myscript.ps1"
. J'ai ajouté mon scriptpost.ps1
dans ce repo git. Il créée automatiquement un contrôleur de domaine et une nouvelle forêt AD, et fixe l'addresse IP. Je conseille fortement de n'utiliser ce fichier qu'en tant qu'exemple, puisque j'utilise des valeurs personnalisées pour le réseau IP et la forêt AD.
Par défaut, quand vous bootez sur l'image ISO de Windows, il vous demandera de Press any key to boot from CD or DVD
. On peut éviter cette partie en allant dans MSMGT > DVD > efi > microsoft > boot
et en supprimant efisys.bin
et cdboot.bin
, puis renommer leurs contreparties (efisys_noprompt.bin
et cdboot_noprompt.bin
) comme les fichiers qu'on vient de supprimer.
- Ouvrez MSMGT :
MSMGT > Start.cmd
(privilèges Administrateur requis). - Acceptez les conditions d'utilisation en tapant
A
. - Construisez le nouveau fichier ISO : Allez à
Target > Make a DVD ISO Image
en tapant6 1
et tapez le label et le nom du nouveau fichier ISO. - Votre fichier ISO sera dans
MSMG > ISO
.
Pour modifier les valeurs par défaut, créez un fichier .tfvars
et définissez des nouvelles valeurs de variables. Voir https://www.terraform.io/docs/language/values/variables.html.
Pour déployer la VM, exécutez (aucun privilège Administrateur n'est requis)
.\run.ps1
Pour détruire les ressources, exécutez
.\destroy.ps1