Il primo avvio di un computer e il join dello stesso ad un dominio può essere un’operazione che fa perdere diversi minuti inutili.
Negli ultimi giorni ho seffettuato dei test che mi permetteranno di risparmiare notevole tempo nell’installazione e nella messa in rete di molti personal computer basati su Windows 7 Professional.
Ho creato un semplice file di risposte unattend.xml che, dopo aver effettuato il sysprep del sistema ed aver creato delle immagini dello stesso per la distribuzione, limita al massimo l’intervento del personale IT per il primo avvio e la messa a dominio del computer.
Nello specifico cho creato 4 file. Tutti da inserire possibilmente in una cartalla di c:\temp
- Join.xml (unattend.xml): il file che contiene le risposte per sysprep (creato per sistema a 64bit) e che al riavvio del computer permette anche il join automatico al dominio lanciando un file cmd di cui parleremo più avanti. Questo file cambia la password dell’amministratore presente sul sistema, crea un nuovo utente amministrativo, lacia un file cmd al primo avvio, permette l’inserimento del nome computer, ecc
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="oobeSystem">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<RequiresUserInput>true</RequiresUserInput>
<Order>1</Order>
<Description>Join</Description>
<CommandLine>c:\temp\join.cmd</CommandLine>
</SynchronousCommand>
</FirstLogonCommands>
<UserAccounts>
<AdministratorPassword>
<Value>Password</Value>
<PlainText>false</PlainText>
</AdministratorPassword>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>Password</Value>
<PlainText>false</PlainText>
</Password>
<Description>Nuovo utente</Description>
<DisplayName>Nuovo utente</DisplayName>
<Group>administrators</Group>
<Name>nuovoutente</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
</component>
</settings>
<settings pass="specialize">
<component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RegisteredOrganization>Mazars Spa</RegisteredOrganization>
<RegisteredOwner>Mazars Spa</RegisteredOwner>
</component>
<component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RunSynchronous>
<RunSynchronousCommand wcm:action="add">
<Description>Disattiva User</Description>
<Order>1</Order>
<Path>net user user /active:no</Path>
</RunSynchronousCommand>
</RunSynchronous>
</component>
</settings>
<settings pass="generalize">
<component name="Microsoft-Windows-Security-Licensing-SLC" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SkipRearm>1</SkipRearm>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:d:/sources/install.wim#Windows 7 ENTERPRISE" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
- Joindomain.ps1: file che contiene il comando powershell per il join del computer al dominio. Questa operazione viene eseguita al riavvio del computer dopo aver effettuato sysprep
Add-Computer -DomainName dominio.local -Credential dominio\administrator
- Join.cmd: questo comando lancia il comando powershell ed è utilizzato al primo avvio del computer da unattend.xml
powershell c:\temp\joindomain.ps1
- Sysprep.cmd: da eseguire con privilegi elevati effettua il sysprep del sistema ed attiva esecuzione di powershell firmate remotamente.
powershell Set-ExecutionPolicy remotesigned
c:\windows\system32\sysprep\sysprep.exe /oobe /generalize /unattend:c:\temp\join.xml
Purtroppo ho potuto verificare di persona che il join automatico del computer al dominio effettuato direttamente da file unattend.xml (cosa davvero molto utile) risulta problematico. Il problema legato al nome assegnato al computer: se viene generato automaticamente dal sistema non ci sono problemi, se viceversa lo modifichiamo a mano, il sistema non si riavvia ed il join viene effettuato con il nome sbagliato.
Ho consultato diversi blog ed il problema è noto. Si può risolvere lanciando uno script powershell come ho fatto al primo avvio del sistema.