0Secuencia de comandos por lotes para cambiar el nombre de la PC según el nombre DHCP reservado

Utilizo WDS en un servidor independiente para configurar nuevos PCs y reimagen PCs cuando hayan terminado destrozados sin posibilidad de reparación. Con un buen numero de PCs en mi propia casa, es útil volver a crear una imagen de ellos ocasionalmente al cambiar o actualizar el hardware. La mayor parte de este proceso ahora está automatizado mediante un archivo unattend.xml, pero un paso que el proceso desatendido no parece admitir es el cambio de nombre. PCs de vuelta a su nombre original.

Todo de mi PCs tener reservas DHCP estáticas con su nombre de host correcto (que también está registrado en DNS) así que pensé que debe haber una manera de obtener esta información y usarla para cambiarles el nombre. Después de mucho juguetear, he producido un script por lotes que hará esto (cuando se ejecuta como administrador).

Simplemente pegue el siguiente código en un archivo .cmd y ejecútelo como parte de su proceso desatendido (Describo el mío a continuación)

@echo apagado
establecer ip_address_string="Dirección IPv4"
PARA / F "usebackq" %%yo EN (`nombre de host`) @echo apagado
establecer ip_address_string= "usebackq tokens = 2 delims =:" %%f en (`ipconfig ^| Findstr / c:%ip_address_string% `) hacer (
    para / f "usebackq tokens = 2 delims =:" %%Ginebra (`nslookup %% f ^| Findstr / c:Nombre`) hacer (
        para / F "tokens = 1 delims =." %%a en ("%%g") hacer (
            para / F "tokens = 1 delims = " %%b en ("%%a") hacer (
                Sistema informático WMIC donde Nombre ="%myvar%" llamar a Renombrar nombre ="%%b"
                ir :eof
            )
        )
    )
)

Llamo a mi guion desde el <FirstLogonCommands> sección de ImageUnattend.xml.

<Comando síncrono wcm:acción ="añadir">
  <Pedido>5</Pedido>
  <Descripción>Cambiar el nombre del sistema</Descripción>
  <Línea de comando>c:\extras  elevate -c c:\extras  renombrar-pc-de-dns.cmd</Línea de comando>
</Comando síncrono>

Para ejecutarlo como administrador, uso una pequeña utilidad. (llamado elevate.exe) que hace esto (los comandos que se ejecutan durante la instalación pueden elevarse sin que aparezca un aviso!). Puede obtenerlo de fuente original

La pieza final del rompecabezas para mi configuración es que modifico la imagen de instalación de Windows para incluir un archivo exe y un pequeño script de powershell, que permiten copiar todos los demás instaladores de la red.. El archivo exe es 'corrientes' que es un sysinternals (ahora parte de Microsoft) utilidad para eliminar la advertencia "este archivo proviene de Internet, ¿está seguro de que desea ejecutarlo?".

También tengo el siguiente script como un archivo .ps1

elemento de copia -Path \ wds-server  RemInst  Custom  *. * -Destination C:\Extras

Mi primer 4 Los LogonCommands son entonces los siguientes...

<Comando síncrono wcm:acción ="añadir">
  <Pedido>1</Pedido>
  <Descripción>Sin espera durante la configuración</Descripción>
  <Línea de comando>powercfg -change standby-timeout-ac 0</Línea de comando>
</Comando síncrono>
<Comando síncrono wcm:acción ="añadir">
  <Pedido>2</Pedido>
  <Descripción>Agregue credenciales para acceder al servidor a través de la red</Descripción>
  <Línea de comando>cmdkey / agregar:wds-servidor / usuario:wds-server  administrador / contraseña:contraseña123</Línea de comando>
</Comando síncrono>
<Comando síncrono wcm:acción ="añadir">
  <Pedido>3</Pedido>
  <Descripción>Copie scripts y aplicaciones de la red a la carpeta de extras</Descripción>
  <Línea de comando>C:\Windows  System32  WindowsPowerShell  v1.0  powershell.exe -windowstyle hidden -ExecutionPolicy ByPass -File C:\Extrascopyapps.ps1</Línea de comando>
</Comando síncrono>
<Comando síncrono wcm:acción ="añadir">
  <Pedido>4</Pedido>
  <Descripción>Eliminar la advertencia de Internet de las aplicaciones copiadas</Descripción>
  <Línea de comando>C:\Extras  Streams64.exe -d -d -nobanner C:\Extras  *. * / Acceptula</Línea de comando>
</Comando síncrono>

Leave a Reply