Le log est désormais stocké dans %temp%

DeployCenter peut être stocké dans un partage en lecture seule
Désactivation de l'hibernation via l'unattend
Désactivation de la mise en veille lorsque le pc est sur secteur
L'installation unattend empêche bitlocker de s'activer (pas de clé stockée en lieu sûr hors domaine et azure en automatique). Cela n'empêche pas de l'activer en connaissance de cause par la suite.
This commit is contained in:
benoit committed 2026-10-19 00:11:09 +02:00
1 parent 6cf58b5646
commit 5a121718d4
7 files changed
+28 -14

No files matched your search

+3 -1
View File
@@ -51,7 +51,7 @@ powershell.exe -ExecutionPolicy Bypass -File .\DeployCenter.ps1 `
-ConfirmDiskErase -RestartWhenComplete -CopyLocally Sources,Drivers
```
Pour laisser Windows gérer OOBE, remplacer les paramètres de profil et de nom d’hôte par `-UnattendProfileId OOBE`. La commande retourne le code de processus `0` en cas de succès et `1` si la préparation ou le déploiement échoue. Après une tentative d’installation, le journal complet est copié à la racine de `C:\`, en cas de succès comme d’échec ; l’original reste dans `Logs`.
Pour laisser Windows gérer OOBE, remplacer les paramètres de profil et de nom d’hôte par `-UnattendProfileId OOBE`. La commande retourne le code de processus `0` en cas de succès et `1` si la préparation ou le déploiement échoue. Après une tentative d’installation, le journal complet est copié à la racine de `C:\`, en cas de succès comme d’échec ; l’original reste dans `%TEMP%\DeployCenter` jusqu’au redémarrage de WinPE.
Conserver à côté du script les ressources habituelles du projet (`Assets`, `uvnc`, `HardwareInfo.ps1`, etc.). Les dossiers `Modules` et `Themes` doivent rester à côté de `DeployCenter.ps1`.
@@ -93,6 +93,8 @@ Pour produire `AdminPasswordBase64`, lancer `powershell.exe -ExecutionPolicy Byp
## Historique récent
- Les journaux de session sont maintenant créés sous `%TEMP%\DeployCenter` par `Logging.psm1`, afin que le dossier du dépôt puisse être en lecture seule. La copie finale du journal à la racine de `C:\` est conservée ; les deux manuels et le changelog le précisent.
- Le template Unattend `OEMInstallation.xml` définit `PreventDeviceEncryption=true` pour empêcher l’activation automatique du chiffrement de l’appareil par BitLocker. Il désactive aussi l’hibernation et la veille automatique sur secteur. Les deux manuels documentent ces réglages ; le parcours « Avec OOBE » reste sans fichier Unattend.
- Correction des chemins d’images dans les deux README : le dépôt suit le dossier `Images/` avec une majuscule, nécessaire au rendu Gitea sensible à la casse ; l’espace du nom de fichier est encodé en `%20`.
- Intégration des six captures de `Images/` dans `README.md` et `README-en.md`, aux étapes de sélection des sources, de progression et de fin du déploiement.
- Traduction anglaise du manuel utilisateur dans `README-en.md`, avec conservation des commandes et identifiants de profils.
+1 -2
View File
@@ -140,7 +140,6 @@ try {
$script:AssetsRoot = Join-Path $script:DeployRoot "Assets"
$script:LogoPath = Join-Path $script:AssetsRoot "logo.png"
$script:LogoDarkPath = Join-Path $script:AssetsRoot "logo-dark.png"
$script:LogRoot = Join-Path $script:DeployRoot "Logs"
# Network detection is centralized in Modules\\Network.psm1.
$networkModulePath = Join-Path $PSScriptRoot "Modules\\Network.psm1"
@@ -156,7 +155,7 @@ if (-not (Test-Path -LiteralPath $loggingModulePath -PathType Leaf)) {
throw "Logging module not found: $loggingModulePath"
}
. ([scriptblock]::Create([System.IO.File]::ReadAllText($loggingModulePath)))
Initialize-DeployCenterLogging -LogRoot $script:LogRoot -IPv4 $script:DeployIPv4
Initialize-DeployCenterLogging -IPv4 $script:DeployIPv4
# Keep the main script scope so Write-Log remains available to WinForms callbacks.
$script:SourceLogAction = {
param($Message, $Level, [bool]$SystemOutput = $false)
-5
View File
@@ -1,5 +0,0 @@
# Ignorer tous les fichiers de ce répertoire
*
# Sauf celui-ci
!.gitignore
+5 -4
View File
@@ -4,14 +4,15 @@
function Initialize-DeployCenterLogging {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string]$LogRoot,
[AllowNull()]
[string]$IPv4 = $null
)
$script:LogRoot = $LogRoot
$tempRoot = [Environment]::GetEnvironmentVariable('TEMP')
if ([string]::IsNullOrWhiteSpace($tempRoot)) {
throw 'The TEMP environment variable is not defined.'
}
$script:LogRoot = Join-Path $tempRoot 'DeployCenter'
if (-not (Test-Path -LiteralPath $script:LogRoot -PathType Container)) {
New-Item -Path $script:LogRoot -ItemType Directory -Force -ErrorAction Stop | Out-Null
}
+3 -1
View File
@@ -159,6 +159,8 @@ Enter the password at the hidden prompt, then put the resulting value in `[Unatt
The `SupportProvider`, `SupportURL`, and `SupportAppURL` keys are optional. `SupportURL` is a support website; `SupportAppURL` is the protocol for a support application. `WallpaperPath` accepts an absolute or DeployCenter-relative `.png`, `.jpg`, or `.bmp` path. When empty, the Windows wallpaper is left unchanged. These customizations apply when an Unattend profile is selected, not with **Use OOBE**.
The `OEMInstallation` Unattend profile asks Windows not to enable automatic BitLocker device encryption (`PreventDeviceEncryption=true`). It also disables hibernation and automatic sleep while on AC power; battery behavior is unchanged. Disabling hibernation also disables Fast Startup. These settings do not apply to **Use OOBE**, which keeps the default Windows behavior. A policy or manual action can still enable BitLocker later.
## Unattended deployment
`-NonInteractive` starts deployment without asking for the choices on the first page. All required parameters must be provided, and `-ConfirmDiskErase` is mandatory. The progress window is still displayed.
@@ -195,7 +197,7 @@ Conditional and optional parameters:
## Logs and troubleshooting
The **Log** button opens the session log. Log files are created in `Logs` with the detected IPv4 address and a timestamp. After a deployment attempt, a copy is placed at the root of `C:\` so it remains accessible if the network share is no longer available.
The **Log** button opens the session log. The file is created in `%TEMP%\DeployCenter` with the detected IPv4 address and a timestamp, so the DeployCenter repository can remain read-only. After a deployment attempt, a copy is placed at the root of `C:\` so it remains accessible if the network share is no longer available. WinPE clears `%TEMP%` on restart.
If deployment fails:
+3 -1
View File
@@ -159,6 +159,8 @@ Saisissez le mot de passe à l’invite masquée, puis placez la valeur produite
Les clés `SupportProvider`, `SupportURL` et `SupportAppURL` sont facultatives. `SupportURL` correspond à un site Web d’assistance ; `SupportAppURL` correspond au protocole d’une application d’assistance. `WallpaperPath` accepte un chemin `.png`, `.jpg` ou `.bmp`, absolu ou relatif au dossier DeployCenter ; vide, il laisse le fond Windows inchangé. Ces personnalisations sont appliquées avec un profil Unattend, pas avec **Use OOBE**.
Le profil Unattend `OEMInstallation` demande à Windows de ne pas activer le chiffrement automatique de l’appareil via BitLocker (`PreventDeviceEncryption=true`). Il désactive aussi l’hibernation et la veille automatique lorsque le PC est sur secteur ; le comportement sur batterie reste inchangé. La désactivation de l’hibernation désactive également le démarrage rapide. Ces options ne s’appliquent pas au choix **Avec OOBE**, qui conserve le comportement Windows par défaut. Une stratégie ou une action manuelle peut toujours activer ultérieurement le chiffrement BitLocker.
## Déploiement automatisé
`-NonInteractive` lance le déploiement sans demander les choix de la première page. Tous les paramètres requis doivent être fournis et `-ConfirmDiskErase` est obligatoire. L’application affiche toujours la fenêtre de progression.
@@ -195,7 +197,7 @@ Paramètres conditionnels et facultatifs :
## Journaux et dépannage
Le bouton **Journal** ouvre le journal de session. Les fichiers sont créés dans `Logs` avec l’adresse IPv4 détectée et l’horodatage. Après une tentative de déploiement, une copie du journal est placée à la racine de `C:\` pour rester accessible même si le partage réseau n’est plus disponible.
Le bouton **Journal** ouvre le journal de session. Le fichier est créé dans `%TEMP%\DeployCenter` avec l’adresse IPv4 détectée et l’horodatage ; le dépôt DeployCenter peut donc rester en lecture seule. Après une tentative de déploiement, une copie du journal est placée à la racine de `C:\` pour rester accessible même si le partage réseau n’est plus disponible. Le contenu de `%TEMP%` est supprimé au redémarrage de WinPE.
En cas d’échec :
+13
View File
@@ -5,6 +5,9 @@
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<ComputerName></ComputerName>
</component>
<component name="microsoft-windows-securestartup-filterdriver-" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<PreventDeviceEncryption>true</PreventDeviceEncryption>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
@@ -17,6 +20,16 @@
<Description>Enable NumLock for new users</Description>
<Path>cmd.exe /c reg load HKU\DeployCenterDefaultUser "%SystemDrive%\Users\Default\NTUSER.DAT" &amp;&amp; reg add "HKU\DeployCenterDefaultUser\Control Panel\Keyboard" /v InitialKeyboardIndicators /t REG_SZ /d 2 /f &amp;&amp; reg unload HKU\DeployCenterDefaultUser</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>3</Order>
<Description>Disable hibernation</Description>
<Path>cmd.exe /c powercfg.exe /hibernate off</Path>
</RunSynchronousCommand>
<RunSynchronousCommand wcm:action="add">
<Order>4</Order>
<Description>Disable automatic sleep on AC power</Description>
<Path>cmd.exe /c powercfg.exe /change standby-timeout-ac 0</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>