Sysprep en Windows 7
Introdución ao Sysprep para Windows 7, 8.1 e 10
Sysprep (preparación do sistema), prepara unha instalación de Windows para crear a súa imaxe. Sysprep elimina da instalación de Windows a información específica do equipo, incluido o identificador de seguridade (SID), co que xeneraliza a instalación para que poida instalarse en varios equipos.
O manual que aquí presentamos ven inspirado dos seguintes titoriais para Windows Vista:
- Saber que, a diferencia do que ocorre en Windows XP, no Windows Vista e no Windows 7 a aplicación Sysprep.exe xa ven no propio sistema operativo, xustamente no directorio C:\Windows\System32.
- O arquivo de respostas agora é un arquivo xml e cambia radicalmente con respecto ao visto para Windows XP.
- Como ferramenta gráfica de axuda para crear este arquivo de respostas hai que descargar e instalar o Kit de Instalación Automatizada para Windows (WAIK) para o Windows 7 e o Windows Assessment and Deployment Kit (Windows ADK) para Windows 8.1 e 10 onde atoparemos a utilidade Administrador de Imáxenes do Sistema (WSIM) que é a que temos que empregar.
Para facer esta práctica precisamos
- O DVD de Windows 7, 8.1 ou 10 en formato dvd ou nun arquivo ISO (neste caso empregarase o arquivo es_windows_7_ultimate_rc_x86_dvd_349016.iso).
- Para Windows 7 o paquete de utilidades Windows AIK para Windows 7, no caso de Windows 8.1 o paquete de utilidades Windows Assessment and Deployment Kit (Windows ADK), para windows 10 ADK for Winddows
- Un equipo con Windows XP SP2, ou superior, para instalar o Windows AIK ou o Windows ADK e onde crearemos o arquivo .xml.
- Un equipo, ou máquina virtual, con Windows 7, Windows 8.1 ou Windows 10 para probar o arquivo sysprep.xml creado.
Plan de traballo
O noso obxectivo é preparar unha imaxe có sistema operativo Windows 7 e todas as ferramentas que nos interesen. Esta imaxe a poderemos clonar en outros equipos con igual ou (agora dende Windows Vista) distinto hardware.
Para a restauración da imaxe nos novos equipos poderase empregar calquera das ferramentas existentes no mercado, como Norton Ghos e Acronis, ou libres como Clonezilla. Así e todo, agora Microsoft tamén ten unha ferramenta para o manexo de imaxes de sistemas operativos denominada ImageX.
Os pasos a seguir serán os seguintes:
- Instalar e configurar o equipo base con Windows 7, actualizalo e agregarlle todas as aplicacións que nos interese.
- Instalar o paquete de utilidades Windows AIK para Windows 7 no equipo de traballo do taller, este equipo terá instalado un sistema operativo Windows XP SP2 ou superior.
- Crear o arquivo sysprep.xml cós requirimentos desexados.
- Executar a aplicación sysprep.exe cós parámetros axeitados.
- Creación da imaxe e posterior clonación no resto dos equipos empregando a nosa ferramenta preferida.
Creación do arquivo sysprep.xml
Como sabemos, o arquivo sysprep.xml automatizará a resposta das preguntas que Windows 7 nos fai cando o PC arranca por primeira vez despois de que fose a imaxe aplicada ao PC: O nome do PC, a Clave do producto, a creación dunha conta local, a Zona Horaria,...
Aquí, como exemplo, crearemos un arquivo para unha situación típica, pero sinxela:
- Nome do equipo: Pedirá o nome cando se inicie o equipo por primeira vez, pero tamén se explicará como configuralo dende o arquivo de respostas.
- Configuración do nome da empresa dona do equipo. No noso caso será TRITON00 SL.
- Configuración IP: DHCP ou IP fixa. Non se verá o xeito de que o pida o Sysprep (pois parece que non hai forma).
- Execución de un ou varios arquivos de procesamento por lotes de xeito automático e sen interacción por parte do usuario. Executando eses arquivos poderemos facer:
- Eliminar o arquivo de respostas unha vez executado, para así evitar posibles copias por un usuario.
- Configuración personalizada do Nome e do TCP/IP do equipo, para configuración da clonación automatizada nunha rede de varios equipos.
- Facer que o equipo sexa membro dun dominio.
- Configurar os sistemas de almacenamento do equipo.
Arranque e configuración inicial do programa WSIM
Para a creación do arquivo sysprep.xml precisamos o programa Windows System Image Manager (WSIM). WSIM é unha parte do paquete de ferramentas Windows Automated Installation Kit para Windows 7 (WAIK).
Unha vez instalado todo o paquete o executamos, tendo a seguinte aparencia:
Logo prememos en “Novo arquivo de resposta...”
Para poder proseguir coa creación do arquivo de resposta temos que “abrir unha imaxe de Windows” que é un arquivo .wim existente dentro da carpeta \Sources do DVD de Windows 7 que imos a clonar (ver este enlace):
Agora sairá unha pantalla que nos permite escoller unha das distribucións existentes no DVD, neste caso nos interesa a de Windows 7 Ultimate:
E xa estamos preparados para comezar a crear o arquivo de resposta:
Como vemos está dividido entre components de Windows e outros packages que podemos agregalos a unha das sete fases de configuración:
- WindowsPE : Esta fase consiste na carga da contorna de preinstalación, cando se inicia o medio de instalación. Nesta fase prepárase o disco duro para a instalación (particionamento e formateo). Os arquivos do sistema operativo son copiados ao disco duro.
- Offline Servicing : Aplícanse actualizacións ao sistema operativo e outros paquetes, tamén paquetes de idioma e actualizacións de seguridade.
- Generalize : Esta fase só ocorre se executamos o sysprep có atributo /generalize. Neste paso pódese configurar algúns parámetros de Windows. Aplicando o parámetro /generalize nos aseguramos que a imaxe xerada será apta para ser clonada en outros equipos distintos do equipo orixe.
- Specialize : Aplícase a información específica do sistema, como a configuración de rede e do dominio.
- AuditSystem : Esta fase só ocorre cando arrancamos o sistema no modo auditoría (audit). Execútase esta fase antes de que calquera usuario inicie sesión.
- AuditUser : Esta fase só ocorre cando arrancamos o sistema no modo auditoría (audit). Execútase esta fase despois de que calquera usuario inicie sesión en modo auditoría.
- OobeSystem : Configuración dos parámetros na instalación de Windows antes de que a Benvida ao sistema operativo apareza.
Pasos da creación do sysprep.xml
Nos seguintes pasos accedemos á parte esquerda onde pon Imaxe de Windows e escollemos o Componente que se mande para engadilo no noso arquivo de resposta no punto tamén indicado:
1.- Componente Microsoft-Windows-Security-SPP_neutral agregalo no noso arquivo de resposta no Componente 3 generalize:
- Una vez agregado vemos á dereita:
- Configuramos:
- SkipRearm=1
- Así facemos que nos permita executar moitas veces o Sysprep, tal e como vemos na axuda da aplicación pulsando F1:
- SkipRearm=1
2.- Componente Windows-Security-SPP-UX__neutral agregalo no noso arquivo de resposta no Componente 4 specialize:
- Configuramos:
- SkipAutoActivation=True
- Así Windows non intenta activarse automáticamente.
- SkipAutoActivation=True
3.- Componente Microsoft-Windows-Shell-Setup_neutral agregalo no noso arquivo de resposta no Componente 4 specialize:
- Configuramos:
- - ComputerName=
- · Se non aparece ComputerName no arquivo de resposta, deberase introducir un nome durante a Windows® Welcome.
- · Se a propiedade ComputerName dáselle o valor asterisco (*) ou baleiro, será xerado un valor aleatorio.
- · Se lle damos un valor terá un máximo de 15 caracteres.
- - ProductKey=xxxx-xxx-...
- Poñerase a Chave da versión do Windows a instalar se interesa.
- En Windows 10 é obrigatorio poñerlle unha, podemos utilizar a da nosa organización ou unha KMS válida.
- - RegisteredOrganization=Microsoft
- Nunca cambiar este valor.
- - RegisteredOwner=AutoBVT
- Nunca cambiar este valor.
- - ShowWindowsLive=false
- Non se mostrará o link de Windows Live no menú de inicio.
- - TimeZone=Romance Standard Time
- A nosa zona horaria que poderemos coñecer có comando tzutil.
- - ComputerName=
- Nota: Se quixeras activar o usuario Administrador debes facer o seguinte:
- Engadir o compoñente amd64_Microsoft-Windows-Deployment__neutral no punto 4 Specialize
- RunSynchronousCommand[Order="1"]
- - Order: 1
- - Path: net user administrator /active:yes
- - WillReboot: Never
- RunSynchronousCommand[Order="1"]
- Engadir o compoñente amd64_Microsoft-Windows-Deployment__neutral no punto 4 Specialize
4.- Componente Microsoft-Windows-International-Core_neutral agregalo no noso arquivo de resposta no Componente 7 oobeSystem:
- - InputLocale=es-ES
- - SystemLocale=es-ES
- - UILanguage=es-ES
- - UILanguageFallback=es-ES
- - UserLocale=es-ES
5.- Componente Microsoft-Windows-Shell-Setup_neutral agregalo no noso arquivo de resposta no Componente 7 oobeSystem: Directamente no componente:
- - RegisteredOrganization=TRITON00 SL
- - RegisteredOwner=TRITON00 SL
- - TimeZone=Romance Standard Time
- A nosa zona horaria que poderemos coñecer có comando tzutil.
No sub-componente OOBE:
- - HideEULAPage=true
- - NetworkLocation=Work
- - ProtectYourPC=1, 2 o 3 (empregando 3 deshabilitamos as actualizacións automáticas)
No sub-componente UserAccounts:
- - AdministratorPassword=abc123.
- O contrasinal do Administrador local.
- - AdministratorPassword=abc123.
No sub-component LocalAccounts débese crear unha conta de usuario có seu password para poder iniciar sesión no equipo cando a instalación remate (este paso é totalmente obrigatorio se o PC se agrega a un Dominio).
Autologon
Para que o seguinte apartado funcione, teremos que baixar o nivel de “Notificación acerca de cambios en el equipo”. Para facelo, en Inicio -> Executar, introducimos o comando UAC e eliximos “Non notificarme nunca”.
En Autologon:
- - Enabled=true
- - LogonCount=1
- Será o número de veces que queremos que inicie automáticamente: 1, 2, 3,... un enteiro.
- - Username=admin
- Usuario con permiso de execución. Non conseguimos iniciar con administrador dende o sysprep.
- - Password: Introducimos o password do usuario "admin"
En FirstLogonCommands: Agregamos un SynchronousCommand por cada vez que se vaia a iniciar o equipo.
- - CommandLine=cmd /c del C:\Windows\system32\sysprep\sysprep.xml
- Tamén poderíamos facelo doutro xeito, empregando un arquivo borrar.bat que tivese no seu interior:
REM Arquivo borrar.bat
REM Borra o sysprep.xml que, por defecto, non se borra
REM -----------------------------------------
del C:\Windows\system32\sysprep\sysprep.xml
REM -----------------------------------------
- Gardando ese arquivo na carpeta Sysprep esta propiedade tería o seguinte valor:
- CommandLine=C:\Windows\system32\sysprep\borrar.bat
- De calquera dos xeitos, así borramos o arquivo sysprep.xml que por defecto non se borra.
- - Order=1
- 1: Primeira vez, 2:Segunda vez, 3:Terceira vez,…
- - RequiresUserInput=false
- Se o comando é automático.
- Gardando ese arquivo na carpeta Sysprep esta propiedade tería o seguinte valor:
- Ollo có nome deste arquivo: Se o arquivo de respostas que estamos a crear é para automatizar a instalación (non a clonación), este arquivo debe chamarse autounattend.xml.
- Ollo cós Passwords empregados no sysprep : Os passwords que aparecen no arquivo .xml están codificados en Base64 NON cifrados. Este detalle podemos comprobalo, por exemplo, na seguinte web onde podemos ver que, por exemplo, ao decodificar a seguinte clave "YQBiAGMAMQAyADMALgAuAFAAYQBzAHMAdwBvAHIAZAA=" vemos que nos devolve a web "abc123..Password". Nós para xerar ese "churro" puxeramos no WAIK a clave "abc123..".
- En Powershell tamén podemos pasar calquera string a Base64:
PS>$b = [System.Text.Encoding]::UTF8.GetBytes("abc123..Password")
PS>[System.Convert]::ToBase64String($b)
YWJjMTIzLi5QYXNzd29yZA==
- En PowerShell tamén podemos pasar calquera Base64 a string e, polo tanto, descubrir o password oculto:
PS>$b = [System.Convert]::FromBase64String("YQBiAGMAMQAyADMALgAuAFAAYQBzAHMAdwBvAHIAZAA=")
PS> [System.Text.Encoding]::UTF8.GetString($b)
a b c 1 2 3 . . P a s s w o r d
#O que hai logo de cada un dos caracteres "non son espazos", podemos velo que mostramos o contido de $b:
PS>$b
97
0
98
0
99
0
49
0
50
...
#Son "0" = Null
#Vémolo mellor agora:
PS>$b = [System.Text.Encoding]::UTF8.GetBytes("abc123..Password")
PS> $b
97
98
99
49
50
...
#Recorda que $b é un array de bytes:
PS>$b.GetType().name
Byte[]
Solución do Sysprep.xml
Unha vez seguidos os pasos anteriores obteremos o seguinte arquivo que chamaremos Sysprep.xml
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="generalize">
<component name="Microsoft-Windows-Security-SPP" 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>
<settings pass="specialize">
<component name="Microsoft-Windows-Security-SPP-UX" 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">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
<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">
<ComputerName>PC-00</ComputerName>
<ShowWindowsLive>false</ShowWindowsLive>
<TimeZone>Romance Standard Time</TimeZone>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-International-Core" 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">
<InputLocale>es-ES</InputLocale>
<SystemLocale>es-ES</SystemLocale>
<UILanguage>es-ES</UILanguage>
<UILanguageFallback>es-ES</UILanguageFallback>
<UserLocale>es-ES</UserLocale>
</component>
<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">
<AutoLogon>
<Password>
<Value>YQBiAGMAMQAyADMALgBQAGEAcwBzAHcAbwByAGQA</Value>
<PlainText>false</PlainText>
</Password>
<Enabled>true</Enabled>
<LogonCount>1</LogonCount>
<Username>admin</Username>
</AutoLogon>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<CommandLine>cmd /c del C:\Windows\system32\sysprep\sysprep.xml</CommandLine>
<Order>1</Order>
<RequiresUserInput>false</RequiresUserInput>
</SynchronousCommand>
</FirstLogonCommands>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>YQBiAGMAMQAyADMALgBQAGEAcwBzAHcAbwByAGQA</Value>
<PlainText>false</PlainText>
</Password>
<Description>admin</Description>
<DisplayName>admin</DisplayName>
<Group>Administradores</Group>
<Name>admin</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<RegisteredOrganization>Triton00 SL</RegisteredOrganization>
<RegisteredOwner>Triton00 SL</RegisteredOwner>
<TimeZone>Romance Standard Time</TimeZone>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:d:/sources/install.wim#Windows 7 ENTERPRISEN"
xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
Execución de Sysprep.exe
Despois de crear o arquivo sysprep.xml debemos copialo na carpeta C:\windows\system32\sysprep do equipo no que queremos aplicalo.
Tarefas a realizar antes da execución do sysprep
- Se o equipo ten instalado o Reproductor de Windows Media
Antes de Executar o sysprep.exe hai que deter o "Servizo de uso compartido de rede do Reproductor de Windows Media". Para iso executa como administrador a ferramenta "services.msc", busca o servizo e premendo no botón dereito do rato enriba del elixe "deter".
- Facer copia de seguridade dos directorios Panther
- Realizaremos copia de seguridade dos seguintes directorios (copiar todos os subdirectorios e arquivos):
- C:\Windows\Panther
- C:\Windows\System32\Sysprep\Panther
Execucióndo comando sysprep.exe (parámetros)
O programa Sysprep.exe ten unha serie de parámetros que deberíamos coñecer:
- sysprep.exe [/oobe | /audit] [/generalize] [/reboot | /shutdown | /quit] [/quiet] [/unattend:answerfile]
- /audit : Restaura o equipo ao modo de auditoría.
- /generalize : Prepara a instalación de Windows para facer unha imaxe del e poder logo clonala. Resetéase o SID creado na instalación.
- /oobe : Restaura o equipo ao Modo de Benvida. Neste Modo o usuario final pode configurar ao seu antoxo o sistema operativo, así pode crear usuarios, cambiarlle de nome ao equipo e outras configuracións. Todos estes parámetros pasaranse có arquivo de respostas creado sysprep.xml.
- /reboot : Reinicia o equipo.
- /shutdown : Apaga o equipo.
- /quiet : Executa o Sysprep sen mostrar ningún tipo de mensaxe de configuración.
- /quit : Pecha o Sysprep despois de executar os comandos especificados.
- /unattend:answerfile : Aplica os parámetros existentes no arquivo de respostas (answerfile) durante a instalación desatendida.
Hai que ter en conta que para transferir unha imaxe a un equipo diferente, primeiro debes quitar a información específica do equipo configurado mediante a xeneralización da imaxe coa ferramenta Sysprep. Para preparar un equipo para o cliente, debes xeralizar (/generalize) o equipo e configuralo para arrancar en OOBE (/oobe) cando un cliente arranque o equipo por primeira vez. Tendo esto en conta, para configurar o sistema para a posterior creación da imaxe debemos executar a aplicación Sysprep.exe cós seguintes parámetros:
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown /unattend:sysprep.xml
Cando executamos o sysprep.exe, o sistema crea un arquivo unattend.xml no directorio C:\Windows\Panther así que o arquivo de respostas creado por nós pode ser borrado sen problemas para ocultar os passwords aí gardados. Ese arquivo creado polo sistema ten xa borrados os passwords e será o que empregue o sistema para configurarse no primeiro arranque.
Resolución de problemas na execución do sysprep
Ollo!! Se actualizaches o Windows 10
Unha vez actualizado o Windows 10, se queremos aplicar o Sysprep este da un erro que nos impide facelo. Son varias as posibilidades:
- Mirar se existe a clave no Rexistro de Windows HKEY_LOCAL_MACHINE/SYSTEM/SETUP/UPGRADE, hai que borrala e así xa se permite a execución:
- Mirar o arquivo de logs C:\Windows\system32\sysprep\Panther\Setupact.log e se o erro indica que "non se poden desinstalar certas apps pertencentes ao usuario que está a executar o sysprep", hai que desinstalalas có seguinte comando:
PS>Remove-AppxPackage -Package [Paquete_A_Desinstalar]
- Se o erro ten que ver con que executamos sysprep máis de tres veces:
- - Configurar as seguintes claves de registro así:
- HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus\GeneralizationState\
- · CleanupState:2
- · GeneralizationState:7
- HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus\GeneralizationState\
- - Executar os seguintes comandos como administrador:
- PS> msdtc -uninstall (espera uns segundos)
- PS> msdtc -install (espera uns segundos)
- PS> Restart-Computer
- Mira se as claves de rexistro non cambiaron.
- Executa outra vez o sysprep có teu .xml
Clonar Windows 7 nunha rede
- Pode ser interesante facer algunha das seguintes accións se queremos clonar unha rede de varios equipos e que estes se fagan membros dun dominio.
1.- Temos que programar varios arquivos de script PowerShell que, con referencia á MAC do equipo, lle configure o nome, a IP e o faga membro dun dominio determinado.
2.- Temos antes que crear un arquivo CSV separado por comas con un contido similar ao seguinte:
MAC,nombre,IP,MS,PE,DNS1,DNS2
08:00:27:B7:0B:CB,PC100,10.200.100.100,255.255.0.0,10.200.0.254,10.0.4.1,10.0.4.2
08:00:27:B7:0B:CC,PC101,10.200.100.101,255.255.0.0,10.200.0.254,10.0.4.1,10.0.4.2
08:00:27:B8:0C:DC,PC102,10.200.100.102,255.255.0.0,10.200.0.254,10.0.4.1,10.0.4.2
3.- Antes de nada, debemos saber que:
- Os scripts de PowerShell son arquivos de texto gardados con extensión .PS1.
- Por defecto estes arquivos os abre o Notepad polo que, se lle decimos en Autologon que se executen o único que ocorre é que se "abren" sen mais. Temos que configurar Windows 7 para que os arquivos con extensión .ps1 se executen todos por defecto có programa Powershell.exe.
- Ademais, para executalos hai que facelo con permisos de Administrador (hai que baixar o nivel de “Notificación acerca de cambios en el equipo”, có comando UAC) e, ademais hai que cambiar a preferencia do usuario para a directiva de execución de Windows PowerShell, executando o comando:
Set-ExecutionPolicy RemoteSigned
Para ver se cambiou o nivel executas o comando:
Get-ExecutionPolicy
4.- Cambiar configuración IPs:
#Conseguir a MAC da tarxeta de rede do teu equipo
$adaptador = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IpEnabled }
<#Seleccionar os parámetros a configurar dende o CSV tendo en conta a MAC do teu equipo#>
$EQ = Import-Csv C:\Windows\System32\sysprep\equipos.csv | Where-Object { $_.MAC -eq $adaptador.MACAddress }
#Cambiarlle a IP ao equipo
#Así configuramos unha IP estática
$adaptador.EnableStatic($EQ.IP,$EQ.MS)
$adaptador.SetGateways($EQ.PE, [UInt16] 1)
$arrDNSServers = @($EQ.DNS1, $EQ.DNS2)
$adaptador.SetDNSServerSearchOrder($arrDNSServers)
<#Se queres IP por DHCP, comenta o bloque anterior e descomenta este:
$adaptador.EnableDHCP()
$arrDNSServers = @()
$adaptador.SetDNSServerSearchOrder($arrDNSServers)
#>
5.-Un código de PowerShell que nos permite cambiar o nome do equipo podería ser o siguinte:
#Conseguir a MAC da tarxeta de rede do equipo
$adaptador = Get-WmiObject Win32_NetworkAdapterConfiguration | Where-Object { $_.IpEnabled }
#Seleccionar os parámetros a configurar dende o CSV tendo en conta a MAC do teu equipo
$EQ = Import-Csv C:\Windows\System32\sysprep\equipos.csv | Where-Object { $_.MAC -eq $adaptador.MACAddress }
#Cambiarlle o nome ao equipo
$equipo = Get-WmiObject -Class Win32_ComputerSystem
$equipo.Rename($EQ.nombre)
#Reiniciamos o equipo
Restart-Computer
6.- Agregar o equipo ao dominio:
#Hai que adaptar as seguintes variables
$usuario = "usuarioConPermisos"
$contrasinal = "contrasinalDoUsuario"
$dominio = "dominio.local"
$password = ConvertTo-SecureString $contrasinal -AsPlainText -Force
$username = $dominio + "\" + $usuario
$myCred = New-Object System.Management.Automation.PSCredential $username, $password
Add-Computer -DomainName $dominio -Credential $myCred
#Engadir o equipo nunha UO determinada:
$uo = "OU=CLIENTES,OU=EQUIPOS,OU=DOMINIO,dc=dominio,dc=local"
Add-Computer -DomainName $dominio -Credential $myCred -OUPath $uo
#Reiniciamos o equipo
Restart-Computer
Nota: Se queres ler un erro con calma, podes engadir, antes do apartado de reiniciar, as seguintes liñas:
<#Párate#>
Write-Host "Pulsa una tecla para continuar ..."
$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
7.- Outro xeito de facelo sería empregado o comando netdom, que permitirá, entre outras cousas cambiarlle o nome ao equipo e facelo membro do dominio. Para que o noso equipo teña esta ferramenta software temos que instalar o paquete: "Herramientas de administración remota del servidor para Windows 7 con Servie Pack 1 (SP1)".
- Baixámolo da web: http://www.microsoft.com/downloads/es-es/details.aspx?familyid=7d2f6ad7-656b-4313-a005-4e344e43997d
- Instalámolo e, logo, activamos a características de Windows -> Ferramentas de Administración remota do servidor -> Ferramentas de Administración de funcións -> Ferramentas de AD DS e AD LDS -> Ferramentas de ADDS -> Ferramentas de Liña de comandos e complementos de AD DS.
Clonar Windows 10 nunha rede
Antes de nada hai que ter preparada a máquina Windows 10:
- · Poñer a ExecutionPolicy en RemoteSigned.
- · Baixar a UAC, que agora se chama "Activar o desactivar el control de cuentas de usuario" que o podes atopar no Panel de control.
O sysprep.xml o configuramos para que arranque dúas veces como usuario "admin".
- - A primeira vez que arranca executamos o script ipnome.ps1 que cambia a IP do equipo, cambia o nome do equipo e logo prepara todo para que se execute o segundo script.
- - A segunda vez que arranca o equipo hai que facer que o equipo entre no dominio (dominio.ps1) pero hai que executalo como administrador (comoadmin.ps1).
A continuación vemos o contido de todos os documentos empregados:
- Contido do unattend.xml para Windows 10 Education Retail Technical Preview 64bits
- - Contraseñas en Base64: "abc123.."
<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<settings pass="generalize">
<component name="Microsoft-Windows-Security-SPP" 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>
<settings pass="specialize">
<component name="Microsoft-Windows-Security-SPP-UX" 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">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
<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">
<ComputerName>*</ComputerName>
<RegisteredOwner>AutoBVT</RegisteredOwner>
<ShowWindowsLive>false</ShowWindowsLive>
<TimeZone>Romance Standard Time</TimeZone>
<ProductKey>NW6C2-QMPVW-D7KKK-3GKT6-VCFB2</ProductKey>
</component>
</settings>
<settings pass="oobeSystem">
<component name="Microsoft-Windows-International-Core" 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">
<InputLocale>es-ES</InputLocale>
<SystemLocale>es-ES</SystemLocale>
<UILanguage>es-ES</UILanguage>
<UILanguageFallback>es-ES</UILanguageFallback>
<UserLocale>es-ES</UserLocale>
</component>
<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">
<AutoLogon>
<Password>
<Value>YQBiAGMAMQAyADMALgAuAFAAYQBzAHMAdwBvAHIAZAA=</Value>
<PlainText>false</PlainText>
</Password>
<Enabled>true</Enabled>
<LogonCount>2</LogonCount>
<Username>wadmin</Username>
</AutoLogon>
<FirstLogonCommands>
<SynchronousCommand wcm:action="add">
<CommandLine>powershell c:\scripts\ipnome.ps1</CommandLine>
<Order>1</Order>
<Description>Cambia IP e nome dos equipos</Description>
<RequiresUserInput>false</RequiresUserInput>
</SynchronousCommand>
</FirstLogonCommands>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<NetworkLocation>Work</NetworkLocation>
<ProtectYourPC>3</ProtectYourPC>
</OOBE>
<UserAccounts>
<LocalAccounts>
<LocalAccount wcm:action="add">
<Password>
<Value>YQBiAGMAMQAyADMALgAuAFAAYQBzAHMAdwBvAHIAZAA=</Value>
<PlainText>false</PlainText>
</Password>
<Description>wadmin</Description>
<DisplayName>wadmin</DisplayName>
<Group>Administradores</Group>
<Name>wadmin</Name>
</LocalAccount>
</LocalAccounts>
</UserAccounts>
<RegisteredOrganization>Viso</RegisteredOrganization>
<RegisteredOwner>Viso</RegisteredOwner>
<TimeZone>Romance Standard Time</TimeZone>
</component>
</settings>
<cpi:offlineImage cpi:source="wim:c:/users/usuario/desktop/sysprep/install.wim#Windows 10 Education Retail Technical Preview" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
- Contido de equipos.csv
MAC,IP,MS,PE,DNS,nombre,dominio
08-00-27-A2-6C-56,172.16.10.201,24,172.16.10.1,172.16.10.10,wclient1,viso.local
08-00-27-A2-6C-55,172.16.10.202,24,172.16.10.1,172.16.10.10,wclient2,viso.local
08-00-27-A2-6C-54,172.16.10.203,24,172.16.10.1,172.16.10.10,wclient3,viso.local
08-00-27-1E-AE-D5,172.16.10.204,24,172.16.10.1,172.16.10.10,wclient4,viso.local
08-00-27-1E-AE-D6,172.16.10.205,24,172.16.10.1,172.16.10.10,wclient5,viso.local
- Contido do ipnome.ps1 para PowerShell 3.0 ou superior
## Adaptador que vamos a configurar
$adaptador = "Ethernet"
#Seleccionar os parámetros a configurar dende o CSV
#buscamos a fila que coincide coa MAC da nosa tarxeta
# MAC,IP,MS,PE,DNS,nombre
##Seleccionamos a nosa NIC “Ethernet” para descubrir a súa MAC
$nic = Get-NetAdapter -name ${adaptador}
$EQ = Import-Csv C:\scripts\equipos.csv | Where-Object { $_.MAC -eq ${nic}.MACAddress }
# Configuración IP
## Desactivamos a obtención automática de configuración IP (DHCP)
Set-NetIPInterface -InterfaceAlias ${adaptador} -DHCP Disabled
## Eliminamos a configuración IP do equipo,
## se non existe devolve un erro que o enviamos a NULL
Remove-NetIPAddress -InterfaceAlias ${adaptador} -IncludeAllCompartments `
-Confirm:$false 2> Out-Null
## Eliminamos a configuración da Puerta de Enlace,
## se non existe devolve un erro que o enviamos a NULL
Remove-NetRoute -InterfaceAlias ${adaptador} -Confirm:$false 2> Out-Null
## Configuramos a IP estática, a máscara de subrede e a porta de enlace
New-NetIPAddress -InterfaceAlias ${adaptador} -AddressFamily IPv4 -IPAddress ${EQ}.IP `
-PrefixLength ${EQ}.MS -Type Unicast -DefaultGateway ${EQ}.PE
## Temos que facer un array cós servidores DNS
###para pasarllos ao comando Set-DnsClientServerAddress
$arrDNSServers = @(${EQ}.DNS)
## Configuramos os servidores DNS
Set-DnsClientServerAddress -InterfaceAlias ${adaptador} -ServerAddresses ${arrDNSServers}
Set-DnsClientGlobalSetting -SuffixSearchList @(${EQ}.dominio)
## – O cambio de IP NON require reinicio –
## - O segundo script o lanzamos dende o Inicio de Windows -
cp C:\scripts\comoadmin.bat "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\"
# Cambiar o nombre e Reiniciar o equipo
Rename-Computer -NewName ${EQ}.nombre -Restart -Force
## – O cambio de Nome SI require reinicio –
- Contido do arquivo comoadmin.bat
#O script comoadmin.bat executa o importante que é comoadmin.ps1
#Non podemos facelo directamente pois os ps1 ábrense có Notepad
cmd /c powershell "C:\scripts\comoadmin.ps1"
- Contido do arquivo comoadmin.ps1
#O script dominio.ps1 hai que executalo como administrador
Start-Process Powershell -Verb RunAs -ArgumentList "-file c:\scripts\dominio.ps1"
- Contido do arquivo dominio.ps1
#Hai que adaptar as seguintes variables
$usuario = "usuario1"
$contrasinal = "abc123.."
$dominio = "viso.local"
$password = ConvertTo-SecureString $contrasinal -AsPlainText -Force
$username = $dominio + "\" + $usuario
$myCred = New-Object System.Management.Automation.PSCredential $username, $password
$uo = "OU=CLIENTES,OU=EQUIPOS,OU=VISO,dc=viso,dc=local"
Add-Computer -DomainName $dominio -Credential $myCred -OUPath $uo
## Borramos o arquivo unattend.xml
del C:\Windows\System32\Sysprep\unattend.xml
## Borramos el script comoadmin.bat que se iniciaba automáticamente
rm "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\comoadmin.bat"
#Reiniciamos o equipo
Restart-Computer
- Comando a executar:
PS>C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /shutdown /unattend:unattend.xml
Introducir un único equipo no dominio
Sen a necesidade de empregar scripts, podemos cambiar o nome dun equipo e metelo no dominio (sen necesidade de reiniciar) xa dende o paso specialize. Debemos modificar o sysprep.xml antes creado, no apartado specilize, tal e como se mostra a continuación:
<unattend xmlns="urn:schemas-microsoft-com:unattend">
<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">
<OEMInformation>
<Manufacturer>IES San Clemente</Manufacturer>
<SupportURL>http://www.iessanclemente.net</SupportURL>
</OEMInformation>
<ComputerName>PC10</ComputerName>
<TimeZone>Romance Standard Time</TimeZone>
<RegisteredOrganization>Microsoft</RegisteredOrganization>
<RegisteredOwner>AutoBVT</RegisteredOwner>
<ShowWindowsLive>false</ShowWindowsLive>
<CopyProfile>true</CopyProfile>
</component>
<component name="Microsoft-Windows-UnattendedJoin" 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">
<Identification>
<Credentials>
<Domain>dominio.local</Domain>
<Password>abc123..</Password>
<Username>administrador</Username>
</Credentials>
<JoinDomain>dominio.local</JoinDomain>
</Identification>
</component>
<component name="Microsoft-Windows-Security-SPP-UX" 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">
<SkipAutoActivation>true</SkipAutoActivation>
</component>
</settings>
<settings pass="generalize">
...
Para facer unha clonación a moitos equipos nunha rede, configurando nomes distintos e meténdoos no dominio, farémolo do seguinte xeito:
- Tal e como apuntamos antes, cando se executa o sysprep.exe, o sistema crea un arquivo unattend.xml na carpeta C:\Windows\Panther. Ese arquivo é o que emprega para modificar o sistema tal e como nos interesa.
- Sabendo esto, se modificamos ese arquivo para cada un dos equipos xa clonados, dende un linux ou dende o clonezilla,... "pero sen arrancar o Windows..." poderíamos ter configurados todos os equipos de xeito particular e xa metidos no dominio. Esto faría que non precisaríamos os scripts de configuración antes vistos.
- A configuración IP podería facerse cun DHCP na rede ou en fase OOBE cun script, pero xa non se precisarían varios reinicios.
Enlaces Interesantes
- Proceso Utilización WinPE + Sysprep + ImageX en Vista
- Sysprep en Technet
- Kit de instalación automatizada (AIK) para Windows Vista
- Kit de instalación automatizada para Windows® 7 RC
- Comparación das Ferramentas incluídas en XP e Vista
- Unattended Windows Setup Reference
- Windows Vista Deployment Step-by-Step Guide
- -- Cristina París
- -- Carlos Carrión