Lo scenario tipico è la necessità di clonare l’OS, tutti i programmi installati e le impostazioni di sistema su molti computer.
(questo post è in fase di test, quindi non affidabile)
-
Prepara il pc con Windows 11 pulito, i programmi e la configurazione di sistema.
Quando arrivi alla schermata OOBE che chiede “creiamo un account”, premi Ctrl+Shift+F3. Questa combinazione fa entrare Windows in Audit Mode: ti logga come built-in Administrator senza creare alcun account utente, ed è la modalità intesa esattamente per preparare immagini da deployment. Niente account utente residui da pulire dopo.
In Audit Mode appare automaticamente la finestra “System Preparation Tool” (Sysprep GUI). Chiudila per ora, devi installare i programmi prima.Installa tutto: Office, browser, antivirus, software gestionale dentale, configurazioni di sistema, stampanti, sfondi, policy. Lavora come Administrator.
Riavvia liberamente: Windows rimane in Audit Mode finché non esegui Sysprep con l’opzione OOBE. -
Fai un backup dell’immagine dell’hd con Clonezilla, es. master_pre_sysprep.img
Sysprep /generalize chiama internamente slmgr /rearm come parte della sua “spersonalizzazione”, quindi ogni Sysprep consuma uno dei 3 rearm disponibili. -
Pulizie pre-Sysprep – Boot normale, rientri in Audit Mode automaticamente. Apri CMD come Administrator ed esegui:
-
-
:: Pulizia file temporanei e Windows Update cache
cleanmgr /sagerun:1 -
:: Rimuovi pacchetti driver duplicati (opzionale ma utile)
dism /online /cleanup-image /startcomponentcleanup /resetbase -
:: Disabilita ibernazione (genera hiberfil.sys, occupa GB inutili nell’immagine)
powercfg /h off -
:: Svuota pagefile (verrà ricreato sulle macchine target)
:: Lo fai dalle proprietà di Sistema → Avanzate → Memoria virtuale → Nessun file di paging → Riavvia
-
-
Sysprep
-
Posiziona l’unattend.xml (vedi sotto) in C:\Windows\System32\Sysprep\unattend.xml
-
esegui il comando
cd C:\Windows\System32\Sysprep
sysprep.exe /generalize /oobe /shutdown /unattend:unattend.xmlsignificato dei flag:
-
/generalize: rimuove SID, dati hardware-specifici, attivazione. Questo è ciò che consuma il rearm.
/oobe: al prossimo boot, la macchina entra in Out-Of-Box Experience (le schermate di setup iniziale)
/shutdown: a fine Sysprep, spegne la macchina (NON riavvia, importante)
/unattend:: applica risposte automatiche durante l’OOBE successivo
-
avvia il pc da usb boot con Clonezilla.
-
crea una immagine dell’hd generalizzato su un hd usb, es. master_sysprepped.img
-
Clona gli altri pc con Clonezilla e l’immagine master_sysprepped.img, opzioni avanzate consigliate:
-
-
-q2 come metodo di salvataggio (partclone, gestisce NTFS correttamente leggendo solo i blocchi usati)
-
-z1p per compressione gzip in parallelo (veloce, immagini ~50% della dimensione originale)
-
-sfsck per skip filesystem check (Sysprep ha già “pulito” il disco)
-
Importante: spunta “clone the hidden data between MBR and 1st partition” o l’equivalente per GPT — su Windows 11 con UEFI hai la partizione EFI System, la MSR, e la recovery che devono essere clonate insieme alla C:
Schema partizioni: Windows 11 usa GPT/UEFI obbligatoriamente. Clonezilla gestisce GPT bene, ma assicurati che il PC target abbia UEFI abilitato e Secure Boot configurato come la sorgente, altrimenti non boota.
-
-
Lascia che Windows completi l’OOBE al primo avvio (nome pc, account, etc)
unattend.xml
Crea un file nominato unattend.xml ; questo file salta lingua, layout, fuso orario, EULA, e crea un account locale Administrator con password. Lasci all’utente finale solo eventuali domande di privacy che non vuoi pre-rispondere — oppure puoi pre-rispondere anche quelle aggiungendo le sezioni OOBE.
Note importanti su questo file:
1. <ComputerName>*</ComputerName>: l’asterisco fa generare a Windows un nome casuale univoco (es. DESKTOP-A7K2M9P). Se vuoi un naming pattern specifico devi gestirlo diversamente (vedi sotto).
2. Password codificata: il campo <Value> contiene la password codificata in Base64 con un suffisso speciale. Devi rigenerarla così:
-Prendi la password che vuoi (es. password123)
-Aggiungi in coda la stringa Password (letterale, perché il campo è una password di un account)
Quindi: password123Password
Codificala in Base64 UTF-16LE. Da PowerShell:
[Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“password123Password”))
3. <ProtectYourPC>3</ProtectYourPC>: imposta privacy su “Use Express settings off” (più conservativo). Valore 1 = Express (tutto attivo). Per gli studi dentali consiglio 3.
4. <HideOnlineAccountScreens>true</HideOnlineAccountScreens>: salta la richiesta di account Microsoft (forza account locale). Su Windows 11 22H2+ home/pro questo potrebbe non bastare — Microsoft ha reso più aggressiva la richiesta di account online. Se ti danno problemi, aggiungi anche <BypassNRO>1</BypassNRO> nella sezione OOBE.
Salva come C:\Windows\System32\Sysprep\unattend.xml
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-microsoft-com:unattend"> <settings pass="specialize"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <ComputerName>*</ComputerName> <TimeZone>W. Europe Standard Time</TimeZone> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <InputLocale>0410:00000410</InputLocale> <SystemLocale>it-IT</SystemLocale> <UILanguage>it-IT</UILanguage> <UserLocale>it-IT</UserLocale> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS"> <OOBE> <HideEULAPage>true</HideEULAPage> <HideLocalAccountScreen>true</HideLocalAccountScreen> <HideOEMRegistrationScreen>true</HideOEMRegistrationScreen> <HideOnlineAccountScreens>true</HideOnlineAccountScreens> <HideWirelessSetupInOOBE>true</HideWirelessSetupInOOBE> <ProtectYourPC>3</ProtectYourPC> </OOBE> <UserAccounts> <LocalAccounts> <LocalAccount wcm:action="add" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State"> <Name>tecnico</Name> <Group>Administrators</Group> <Password> <Value>UFNAUWQyMDI2IQ==</Value> <PlainText>false</PlainText> </Password> <Description>Account amministrativo</Description> <DisplayName>Tecnico</DisplayName> </LocalAccount> </LocalAccounts> </UserAccounts> <AutoLogon> <Enabled>false</Enabled> </AutoLogon> <RegisteredOwner>Dental Hub Solution</RegisteredOwner> <RegisteredOrganization>DHS</RegisteredOrganization> </component> </settings> </unattend> |



