Ajout d'un fond d'écran personnalisé si fourni dans DeployCenter.ini
Renommage du profil unattend pour mieux correspondre à ce qu'il fait. Ajout d'un warning si WinRE n'est pas assez grands au regard des préconisations Microsoft et du redémarrage automatique si l'installation réussi.
This commit is contained in:
1 parent
e067721763
commit
cb917c97ce
11 files changed
+161
-23
No files matched your search
Binary file not shown.
|
After Width: | Height: | Size: 973 KiB |
@@ -1,26 +1,42 @@
|
||||
; Preferences DeployCenter
|
||||
; Le fichier est lu au démarrage et n'est jamais modifié automatiquement.
|
||||
; Copiez ce fichier sous le nom DeployCenter.ini puis adaptez les valeurs.
|
||||
[General]
|
||||
; Nom d'un fichier Themes\<Nom>.psd1 sans extension. Valeur par défaut : Light.
|
||||
Theme=Light
|
||||
|
||||
[Sources]
|
||||
; Racines à analyser, séparées par des points-virgules.
|
||||
; %DEPLOY_VOLUME% désigne le lecteur qui héberge DeployCenter.
|
||||
Paths=%DEPLOY_VOLUME%
|
||||
|
||||
[UltraVNC]
|
||||
; Laisser vide pour générer un mot de passe aléatoire à chaque lancement.
|
||||
; Pour les tests, renseigner un mot de passe ici. Il sera encodé dans ultravnc.ini par createpassword64.exe.
|
||||
; Pour les tests, renseigner un mot de passe ici. Il sera converti dans ultravnc.ini par createpassword64.exe.
|
||||
Password=
|
||||
|
||||
[Partitioning]
|
||||
; Taille de la partition WinRE en Mo ; défaut : 1024 (1 Go), minimum : 990.
|
||||
; Taille réservée à WinRE en Mo. Valeur par défaut : 1024 (1 Go).
|
||||
; La valeur doit être un entier strictement positif ; Windows recommande au moins 990 Mo.
|
||||
; WinRESizeMB=1024
|
||||
|
||||
[Unattend]
|
||||
; Paramètres utilisés par les profils qui créent un compte administrateur local.
|
||||
; Utilisés par les profils Unattend qui créent un compte administrateur local.
|
||||
; AdminName : nom de connexion (défaut : admin).
|
||||
AdminName=admin
|
||||
; AdminDisplayName : nom affiché (défaut : Administrateur local).
|
||||
AdminDisplayName=Administrateur local
|
||||
; Utiliser les noms de groupes neutres en anglais, reconnus sur toutes les langues Windows.
|
||||
; AdminGroup : groupe local ; utiliser le nom neutre anglais reconnu sur toutes les langues Windows.
|
||||
AdminGroup=Administrators
|
||||
; Base64 du mot de passe encodé en UTF-16LE (ce n'est pas un chiffrement).
|
||||
; Laisser vide empêche l'utilisation du profil jusqu'à la configuration d'un mot de passe.
|
||||
; Vide par défaut : le profil créant un compte local sera indisponible tant qu'un mot de passe n'est pas fourni.
|
||||
AdminPasswordBase64=
|
||||
; Nom facultatif affiché comme fournisseur de support Windows.
|
||||
; Si vide ou absent, Windows utilise le fabricant système.
|
||||
SupportProvider=
|
||||
; URI facultative de l'application ou du site de support Windows.
|
||||
SupportAppURL=
|
||||
; Chemin du fond d'écran, absolu ou relatif au dossier DeployCenter.
|
||||
; L'image est copiée dans Windows et définie dans le thème par défaut des nouveaux utilisateurs.
|
||||
; Vide = fond Windows inchangé. Cette option nécessite un profil Unattend ; « Avec OOBE » reste sans Unattend.
|
||||
WallpaperPath=Assets\blorand.png
|
||||
+10
-2
@@ -715,7 +715,7 @@ $script:btnDeploy.Add_Click({
|
||||
[System.Windows.Forms.Application]::DoEvents()
|
||||
}.GetNewClosure()
|
||||
|
||||
Invoke-DeployCenterWindowsDeployment `
|
||||
$deploymentResult = Invoke-DeployCenterWindowsDeployment `
|
||||
-DiskInfo $diskInfo `
|
||||
-Profile $script:SelectedPartitionProfile `
|
||||
-SizingState $script:SelectedPartitionSizing `
|
||||
@@ -730,8 +730,16 @@ $script:btnDeploy.Add_Click({
|
||||
|
||||
$progress.Form.Close()
|
||||
$script:form.Enabled = $true
|
||||
$completionMessage = 'Windows a été appliqué avec succès. Le déploiement est prêt.'
|
||||
$restartByDefault = $true
|
||||
if ($deploymentResult -and @($deploymentResult.WinRERecommendationWarnings).Count -gt 0) {
|
||||
$winreWarnings = @($deploymentResult.WinRERecommendationWarnings) -join '; '
|
||||
$completionMessage += "`r`n`r`nRappel WinRE : les recommandations Microsoft ne sont pas toutes respectées : $winreWarnings."
|
||||
$restartByDefault = $false
|
||||
}
|
||||
$restartAfterDeployment = Show-DeployCenterDeploymentComplete `
|
||||
-Message 'Windows a été appliqué avec succès. Le déploiement est prêt.' `
|
||||
-Message $completionMessage `
|
||||
-RestartByDefault $restartByDefault `
|
||||
-Owner $script:form -Theme $script:Theme -Font $script:FontRegular
|
||||
if ($restartAfterDeployment) {
|
||||
$script:RestartAfterDeployment = $true
|
||||
|
||||
@@ -14,6 +14,9 @@ function Read-DeployCenterConfig {
|
||||
UnattendAdminDisplayName = 'Administrateur local'
|
||||
UnattendAdminGroup = 'Administrators'
|
||||
UnattendAdminPasswordBase64 = ''
|
||||
UnattendSupportProvider = ''
|
||||
UnattendSupportAppURL = ''
|
||||
UnattendWallpaperPath = 'Assets\blorand.png'
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath $ConfigPath -PathType Leaf)) { return $config }
|
||||
|
||||
@@ -46,6 +49,12 @@ function Read-DeployCenterConfig {
|
||||
$config.UnattendAdminGroup = $value
|
||||
} elseif ($section -ieq 'Unattend' -and $key -ieq 'AdminPasswordBase64') {
|
||||
$config.UnattendAdminPasswordBase64 = $value
|
||||
} elseif ($section -ieq 'Unattend' -and $key -ieq 'SupportProvider') {
|
||||
$config.UnattendSupportProvider = $value
|
||||
} elseif ($section -ieq 'Unattend' -and $key -ieq 'SupportAppURL') {
|
||||
$config.UnattendSupportAppURL = $value
|
||||
} elseif ($section -ieq 'Unattend' -and $key -ieq 'WallpaperPath') {
|
||||
$config.UnattendWallpaperPath = $value
|
||||
}
|
||||
}
|
||||
return $config
|
||||
|
||||
+44
-1
@@ -444,6 +444,7 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
if ($null -eq $UnattendConfiguration) { throw 'La configuration DeployCenter.ini est absente pour le profil Unattend sélectionné.' }
|
||||
Test-DeployCenterUnattendConfiguration -Profile $UnattendProfile -Configuration $UnattendConfiguration -HostName ([string]$HostName)
|
||||
}
|
||||
$winreRecommendationWarnings = @()
|
||||
if ([string]$Firmware -ne [string]$Profile.Firmware) {
|
||||
throw ("Le profil {0} exige le firmware {1}, détecté : {2}." -f $Profile.Name, $Profile.Firmware, $Firmware)
|
||||
}
|
||||
@@ -464,6 +465,25 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
}
|
||||
if (-not $Edition.Index -or [int]$Edition.Index -lt 1) { throw "L’index de l’édition Windows est invalide." }
|
||||
|
||||
$wallpaperSourcePath = $null
|
||||
if ($null -ne $UnattendProfile -and $null -ne $UnattendConfiguration) {
|
||||
$configuredWallpaperPath = [string]$UnattendConfiguration.UnattendWallpaperPath
|
||||
if (-not [string]::IsNullOrWhiteSpace($configuredWallpaperPath)) {
|
||||
$deployRoot = Split-Path -Path $PSScriptRoot -Parent
|
||||
if ([System.IO.Path]::IsPathRooted($configuredWallpaperPath)) {
|
||||
$wallpaperSourcePath = [System.IO.Path]::GetFullPath($configuredWallpaperPath)
|
||||
} else {
|
||||
$wallpaperSourcePath = [System.IO.Path]::GetFullPath((Join-Path $deployRoot $configuredWallpaperPath))
|
||||
}
|
||||
if ([System.IO.Path]::GetExtension($wallpaperSourcePath) -notin @('.png', '.jpg', '.bmp')) {
|
||||
throw 'WallpaperPath doit désigner un fichier .png, .jpg ou .bmp.'
|
||||
}
|
||||
if (-not (Test-Path -LiteralPath $wallpaperSourcePath -PathType Leaf)) {
|
||||
throw "Image de fond introuvable : $wallpaperSourcePath"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$disk = Get-Disk -Number ([int]$DiskInfo.Index) -ErrorAction Stop
|
||||
if ($disk.IsBoot -or $disk.IsSystem) { throw 'Le disque sélectionné héberge le système WinPE et ne peut pas être effacé.' }
|
||||
if ($disk.IsOffline) { [void](Set-Disk -Number $disk.Number -IsOffline $false -ErrorAction Stop) }
|
||||
@@ -577,11 +597,28 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
throw "Le profil doit définir les rôles System, Windows et Recovery pour permettre l’installation UEFI avec WinRE."
|
||||
}
|
||||
|
||||
$wallpaperTargetPath = $null
|
||||
$wallpaperDestination = $null
|
||||
if ($wallpaperSourcePath) {
|
||||
$wallpaperName = [System.IO.Path]::GetFileName($wallpaperSourcePath)
|
||||
$wallpaperDirectory = Join-Path $windowsRoot 'Web\Wallpaper\DeployCenter'
|
||||
$wallpaperDestination = Join-Path $wallpaperDirectory $wallpaperName
|
||||
$wallpaperTargetPath = '%WINDIR%\Web\Wallpaper\DeployCenter\' + $wallpaperName
|
||||
if ($wallpaperDestination.Length -gt 259) { throw "Le chemin configuré du fond d’écran dépasse 259 caractères dans Windows." }
|
||||
}
|
||||
|
||||
if ($ProgressAction) { & $ProgressAction "Application de Windows sur ${windowsLetter}:…" }
|
||||
Invoke-DeployCenterNativeCommand -FilePath $dismPath -Arguments @(
|
||||
'/Apply-Image', "/ImageFile:$deploymentImagePath", "/Index:$([int]$Edition.Index)", "/ApplyDir:$windowsPath", '/CheckIntegrity'
|
||||
) -TemporaryRoot $TemporaryRoot -LogAction $LogAction -ProgressAction $ProgressAction
|
||||
|
||||
if ($wallpaperSourcePath) {
|
||||
New-Item -Path $wallpaperDirectory -ItemType Directory -Force -ErrorAction Stop | Out-Null
|
||||
Copy-Item -LiteralPath $wallpaperSourcePath -Destination $wallpaperDestination -Force -ErrorAction Stop
|
||||
Write-DeployCenterDeploymentLog -LogAction $LogAction `
|
||||
-Message ("Image de fond copiée dans Windows : {0}." -f $wallpaperDestination) -Level 'INFO'
|
||||
}
|
||||
|
||||
if ($ProgressAction) { & $ProgressAction 'Vérification de la capacité de la partition WinRE…' }
|
||||
$sourceWinre = Join-Path $windowsRoot 'System32\Recovery\winre.wim'
|
||||
if (-not (Test-Path -LiteralPath $sourceWinre -PathType Leaf)) {
|
||||
@@ -615,6 +652,7 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
}
|
||||
if ($recommendationWarnings.Count -gt 0) {
|
||||
$warningDetails = $recommendationWarnings -join '; '
|
||||
$winreRecommendationWarnings = @($recommendationWarnings.ToArray())
|
||||
$message = "Avertissement WinRE : les recommandations Microsoft ne sont pas toutes respectées ($warningDetails). La copie de winre.wim reste possible ; le déploiement continue."
|
||||
Write-DeployCenterDeploymentLog -LogAction $LogAction -Message $message -Level 'WARNING'
|
||||
} else {
|
||||
@@ -625,7 +663,8 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
if ($ProgressAction) { & $ProgressAction 'Préparation du fichier de réponses Windows…' }
|
||||
$editionArchitecture = if ($Edition.Edition -and $Edition.Edition.Architecture) { [string]$Edition.Edition.Architecture } else { [string]$Edition.Architecture }
|
||||
$unattendXml = New-DeployCenterUnattendXml -Profile $UnattendProfile `
|
||||
-Configuration $UnattendConfiguration -HostName ([string]$HostName) -Architecture $editionArchitecture
|
||||
-Configuration $UnattendConfiguration -HostName ([string]$HostName) `
|
||||
-Architecture $editionArchitecture -WallpaperPath ([string]$wallpaperTargetPath)
|
||||
[System.IO.File]::WriteAllText($unattendPath, $unattendXml, (New-Object System.Text.UTF8Encoding($false)))
|
||||
$pantherUnattendDirectory = Join-Path $windowsRoot 'Panther\Unattend'
|
||||
New-Item -Path $pantherUnattendDirectory -ItemType Directory -Force -ErrorAction Stop | Out-Null
|
||||
@@ -703,6 +742,10 @@ function Invoke-DeployCenterWindowsDeployment {
|
||||
} finally {
|
||||
Remove-DeployCenterDismSourceAccess -Lease $sourceLease -TemporaryRoot $TemporaryRoot -LogAction $LogAction
|
||||
}
|
||||
return [pscustomobject]@{
|
||||
WinRERecommendationWarnings = @($winreRecommendationWarnings)
|
||||
WinRERecommendationsMet = ($winreRecommendationWarnings.Count -eq 0)
|
||||
}
|
||||
}
|
||||
|
||||
Export-ModuleMember -Function Invoke-DeployCenterWindowsDeployment, Restart-DeployCenterWinPE
|
||||
+4
-3
@@ -138,7 +138,7 @@ function New-DeployCenterDeploymentControls {
|
||||
$unattendLabel.Name = 'lblUnattendProfile'
|
||||
$unattendLabel.Text = 'Configuration de première ouverture'
|
||||
$unattendLabel.Location = New-Object System.Drawing.Point(12, 190)
|
||||
$unattendLabel.Size = New-Object System.Drawing.Size(320, 18)
|
||||
$unattendLabel.Size = New-Object System.Drawing.Size(320, 17)
|
||||
$unattendLabel.Font = $Font
|
||||
$unattendLabel.ForeColor = $Theme.Text
|
||||
$unattendLabel.BackColor = [System.Drawing.Color]::Transparent
|
||||
@@ -516,7 +516,8 @@ function Show-DeployCenterDeploymentComplete {
|
||||
[Parameter(Mandatory=$true)][string]$Message,
|
||||
[Parameter(Mandatory=$true)][System.Windows.Forms.Form]$Owner,
|
||||
[Parameter(Mandatory=$true)][System.Collections.IDictionary]$Theme,
|
||||
[Parameter(Mandatory=$true)][System.Drawing.Font]$Font
|
||||
[Parameter(Mandatory=$true)][System.Drawing.Font]$Font,
|
||||
[bool]$RestartByDefault = $true
|
||||
)
|
||||
|
||||
$dialog = New-Object System.Windows.Forms.Form
|
||||
@@ -562,7 +563,7 @@ function Show-DeployCenterDeploymentComplete {
|
||||
$restartCheckBox.Text = 'Redémarrer cet ordinateur après fermeture'
|
||||
$restartCheckBox.Location = New-Object System.Drawing.Point(64, ($messageHeight + 34))
|
||||
$restartCheckBox.Size = New-Object System.Drawing.Size(380, 26)
|
||||
$restartCheckBox.Checked = $true
|
||||
$restartCheckBox.Checked = $RestartByDefault
|
||||
$restartCheckBox.ForeColor = $Theme.Text
|
||||
$restartCheckBox.BackColor = [System.Drawing.Color]::Transparent
|
||||
$restartCheckBox.Font = $Font
|
||||
|
||||
+46
-1
@@ -76,7 +76,8 @@ function New-DeployCenterUnattendXml {
|
||||
[Parameter(Mandatory=$true)][System.Collections.IDictionary]$Profile,
|
||||
[Parameter(Mandatory=$true)][System.Collections.IDictionary]$Configuration,
|
||||
[Parameter(Mandatory=$true)][string]$HostName,
|
||||
[Parameter(Mandatory=$true)][string]$Architecture
|
||||
[Parameter(Mandatory=$true)][string]$Architecture,
|
||||
[AllowEmptyString()][string]$WallpaperPath = ''
|
||||
)
|
||||
|
||||
Test-DeployCenterUnattendConfiguration -Profile $Profile -Configuration $Configuration -HostName $HostName
|
||||
@@ -114,6 +115,50 @@ function New-DeployCenterUnattendXml {
|
||||
$node.InnerText = $values[$name]
|
||||
}
|
||||
}
|
||||
$supportSettings = @(
|
||||
@{ Name = 'SupportProvider'; Value = [string]$Configuration.UnattendSupportProvider },
|
||||
@{ Name = 'SupportAppURL'; Value = [string]$Configuration.UnattendSupportAppURL }
|
||||
)
|
||||
$oemInformationPath = '/u:unattend/u:settings[@pass="oobeSystem"]/u:component[@name="Microsoft-Windows-Shell-Setup"]/u:OEMInformation'
|
||||
foreach ($supportSetting in $supportSettings) {
|
||||
$supportNode = $document.SelectSingleNode(($oemInformationPath + '/u:' + $supportSetting.Name), $namespaces)
|
||||
if ($null -eq $supportNode) {
|
||||
if (-not [string]::IsNullOrWhiteSpace($supportSetting.Value)) {
|
||||
throw ('Le template du profil {0} ne definit pas le noeud {1}.' -f $Profile.Id, $supportSetting.Name)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if ([string]::IsNullOrWhiteSpace($supportSetting.Value)) {
|
||||
[void]$supportNode.ParentNode.RemoveChild($supportNode)
|
||||
} else {
|
||||
$supportNode.InnerText = $supportSetting.Value
|
||||
}
|
||||
}
|
||||
$oemInformationNode = $document.SelectSingleNode($oemInformationPath, $namespaces)
|
||||
if ($null -ne $oemInformationNode -and $oemInformationNode.SelectNodes('u:*', $namespaces).Count -eq 0) {
|
||||
[void]$oemInformationNode.ParentNode.RemoveChild($oemInformationNode)
|
||||
}
|
||||
if (-not [string]::IsNullOrWhiteSpace($WallpaperPath)) {
|
||||
$shellSetupNode = $document.SelectSingleNode('/u:unattend/u:settings[@pass="oobeSystem"]/u:component[@name="Microsoft-Windows-Shell-Setup"]', $namespaces)
|
||||
if ($null -eq $shellSetupNode) { throw ('Le template du profil {0} ne definit pas le composant Shell-Setup dans oobeSystem.' -f $Profile.Id) }
|
||||
$themesNode = $shellSetupNode.SelectSingleNode('u:Themes', $namespaces)
|
||||
if ($null -eq $themesNode) {
|
||||
$themesNode = $document.CreateElement('Themes', 'urn:schemas-microsoft-com:unattend')
|
||||
[void]$shellSetupNode.AppendChild($themesNode)
|
||||
}
|
||||
foreach ($themeSetting in @(
|
||||
@{ Name = 'ThemeName'; Value = 'Blorand' },
|
||||
@{ Name = 'DesktopBackground'; Value = $WallpaperPath },
|
||||
@{ Name = 'UWPAppsUseLightTheme'; Value = 'true' }
|
||||
)) {
|
||||
$themeNode = $themesNode.SelectSingleNode(('u:' + $themeSetting.Name), $namespaces)
|
||||
if ($null -eq $themeNode) {
|
||||
$themeNode = $document.CreateElement($themeSetting.Name, 'urn:schemas-microsoft-com:unattend')
|
||||
[void]$themesNode.AppendChild($themeNode)
|
||||
}
|
||||
$themeNode.InnerText = [string]$themeSetting.Value
|
||||
}
|
||||
}
|
||||
return $document.OuterXml
|
||||
}
|
||||
|
||||
|
||||
@@ -51,14 +51,26 @@ Le mot de passe est stocké en clair dans `DeployCenter.ini` : utilisez cette op
|
||||
|
||||
La taille configurée par défaut est de 1 Go (1024 Mo). Elle peut être remplacée dans `DeployCenter.ini`, sous `[Partitioning]`, par `WinRESizeMB=1536` par exemple. La valeur doit être un entier strictement positif. Après l’application de Windows, DeployCenter vérifie la taille réelle de `winre.wim` : le déploiement échoue seulement si l’espace libre ne permet pas de copier le fichier. Une partition plus petite que 990 Mo ou un espace libre après copie inférieur à 250 Mo génère un avertissement, puis le déploiement continue.
|
||||
|
||||
## Paramètres Unattend facultatifs
|
||||
|
||||
Sous `[Unattend]`, `SupportProvider` définit le nom de fournisseur de support et `SupportAppURL` l’URI de l’application ou du site de support dans `OEMInformation` du fichier de réponses. Ces clés sont facultatives ; chaque élément vide ou absent est omis indépendamment. `WallpaperPath` désigne l’image `.png`, `.jpg` ou `.bmp` à utiliser dans le thème Windows par défaut ; le chemin peut être absolu ou relatif au dossier DeployCenter. `Assets\blorand.png` est la valeur par défaut et une valeur vide laisse le fond Windows inchangé. Le fond est appliqué aux déploiements avec profil Unattend ; « Avec OOBE » reste sans fichier Unattend. Le template `InstallationOEM.xml` utilise `fr-FR` pour `InputLocale`.
|
||||
|
||||
## Historique récent
|
||||
|
||||
- La description du profil PSD1 `InstallationOEM` évite l’apostrophe typographique dans une chaîne entre apostrophes, pour rester analysable sous Windows PowerShell 5.1.
|
||||
- Le profil Unattend `LocalAdmin` a été renommé `InstallationOEM` : son ID, son fichier PSD1, son template XML et sa description sont alignés sur son rôle.
|
||||
- Le profil affiché sous le nom « Installation OEM » prépare le nom d’hôte, le compte local et les options OEM. À la fin du déploiement, les avertissements de recommandations WinRE sont rappelés ; la case de redémarrage automatique est décochée s’il y en a.
|
||||
- Correction de la chaîne d’erreur de validation du chemin du fond d’écran dans `Deployment.psm1` : elle est délimitée par des guillemets doubles pour éviter toute ambiguïté d’apostrophe dans Windows PowerShell 5.1.
|
||||
- L’image `Assets/blorand.png` devient le fond du thème Windows par défaut pour les nouveaux utilisateurs des déploiements utilisant un profil Unattend. `[Unattend] WallpaperPath` accepte un chemin absolu ou relatif au dossier DeployCenter ; une valeur vide désactive cette personnalisation. Le mode « Avec OOBE » reste sans fichier Unattend et conserve donc le fond Windows.
|
||||
- `DeployCenter.ini.example` documente désormais toutes les options reconnues par `Configuration.psm1`, y compris `SupportProvider` et `SupportAppURL` sous forme de clés explicites vides par défaut.
|
||||
- Le profil `InstallationOEM` utilise `fr-FR` pour `InputLocale`. Les clés facultatives `[Unattend] SupportProvider` et `SupportAppURL` ajoutent indépendamment le fournisseur et l’URI de support à `OEMInformation` ; chaque élément est omis lorsque sa clé est absente ou vide.
|
||||
- Le `clean` et la création des partitions sont exécutés en deux étapes DiskPart ; `Update-HostStorageCache` actualise les objets Storage entre les deux, puis après le partitionnement, les retraits de lettres et le `mountvol /D` de la source, avant les contrôles concernés. Si le cmdlet est indisponible dans WinPE, le déploiement continue avec un avertissement.
|
||||
- Le choix « Avec OOBE » ne génère ni n’applique de fichier de réponses et masque la saisie du nom d’hôte. Les profils `Unattend/Profiles/*.psd1` alimentent le menu de la page principale ; le profil `LocalAdmin` configure le nom de machine et crée un compte local de la configuration `[Unattend]`, sans activer le compte intégré Administrator.
|
||||
- Le choix « Avec OOBE » ne génère ni n’applique de fichier de réponses et masque la saisie du nom d’hôte. Les profils `Unattend/Profiles/*.psd1` alimentent le menu de la page principale ; le profil `InstallationOEM` configure le nom de machine et crée un compte local de la configuration `[Unattend]`, sans activer le compte intégré Administrator.
|
||||
- Chaque profil Unattend déclare `Target = 'Workstation'` ou `Target = 'Server'`. Le menu propose les profils correspondant à l’édition retenue (le nom contenant « Server » sélectionne la catégorie serveur) ; avant le choix d’une édition, seul « Avec OOBE » est disponible.
|
||||
- L’indication « Environnement : WinPE » a été retirée de l’écran principal. Le bloc d’informations PC est moins haut et le bloc de préparation est remonté/compacté afin de dégager les boutons d’action sur les petites résolutions.
|
||||
- Le template Workstation renseigne les paramètres régionaux français et répond aux pages OOBE de licence, inscription OEM, compte en ligne, réseau sans fil et paramètres express. Le compte local est fourni dans `UserAccounts`; les paramètres `SkipMachineOOBE` et `SkipUserOOBE` ne sont pas utilisés.
|
||||
- À la fin d’un déploiement réussi, la boîte de confirmation propose le redémarrage WinPE avec une case cochée par défaut. Si elle reste cochée, DeployCenter ferme ses ressources, arrête VNC, démonte l’image source puis demande le redémarrage via `wpeutil`.
|
||||
- Le libellé « Configuration de première ouverture » a été raccourci d’un pixel en hauteur pour ne plus recouvrir le bord supérieur de sa liste déroulante.
|
||||
- Compatibilité Windows PowerShell 5.1 : les chaînes de diagnostic de `Unattend.psm1` évitent les apostrophes intégrées et le module est enregistré en UTF-8 avec BOM.
|
||||
- Le groupe local du compte est configuré avec le nom neutre `Administrators`, que Windows traduit selon la langue de l’image ; cela évite de dépendre du libellé français `Administrateurs`.
|
||||
- Les réponses `specialize` et `oobeSystem` sont placées dans `Windows\Panther\Unattend\Unattend.xml` pour être traitées par Windows Setup au premier démarrage. Le mot de passe du compte local provient de `AdminPasswordBase64` (Base64 UTF-16LE, réversible) et n’est jamais ajouté au journal.
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
@{
|
||||
Id = 'InstallationOEM'
|
||||
Name = 'Installation OEM'
|
||||
Description = 'Configure un poste Windows avec le nom de machine, un compte local défini dans DeployCenter.ini et les personnalisations OEM sélectionnées.'
|
||||
Target = 'Workstation'
|
||||
Template = 'InstallationOEM.xml'
|
||||
ComputerName = $true
|
||||
LocalAccount = $true
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
@{
|
||||
Id = 'LocalAdmin'
|
||||
Name = 'Compte administrateur local'
|
||||
Description = 'Configure le nom de la machine et crée un compte local membre du groupe des administrateurs.'
|
||||
Target = 'Workstation'
|
||||
Template = 'LocalAdmin.xml'
|
||||
ComputerName = $true
|
||||
LocalAccount = $true
|
||||
}
|
||||
@@ -8,12 +8,16 @@
|
||||
</settings>
|
||||
<settings pass="oobeSystem">
|
||||
<component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
||||
<InputLocale>040c:0000040c</InputLocale>
|
||||
<InputLocale>fr-FR</InputLocale>
|
||||
<SystemLocale>fr-FR</SystemLocale>
|
||||
<UILanguage>fr-FR</UILanguage>
|
||||
<UserLocale>fr-FR</UserLocale>
|
||||
</component>
|
||||
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS">
|
||||
<OEMInformation>
|
||||
<SupportProvider></SupportProvider>
|
||||
<SupportAppURL></SupportAppURL>
|
||||
</OEMInformation>
|
||||
<OOBE>
|
||||
<HideEULAPage>true</HideEULAPage>
|
||||
<HideOEMRegistrationScreen>true</HideOEMRegistrationScreen>
|
||||
Reference in new issue
Block a user