0Script batch per rinominare il PC in base al nome DHCP riservato

Uso WDS su un server standalone per configurarne uno nuovo PC e per reimmaginare PC quando sono finiti mutilati in modo irreparabile. Con un buon numero di PC a casa mia è utile ricrearli di tanto in tanto durante lo scambio o l'aggiornamento dell'hardware. La maggior parte di questo processo è ora automatizzato da un file unattend.xml ma un passaggio che il processo automatico non sembra supportare è la ridenominazione PC tornano al loro nome originale.

Tutto il mio PC hanno prenotazioni DHCP statiche con il nome host corretto (che è anche registrato in DNS) quindi ho pensato che ci dovesse essere un modo per estrarre queste informazioni e usarle per rinominarle. Dopo aver giocherellato molto, ho prodotto uno script batch che lo farà (quando eseguito come amministratore).

Basta incollare il seguente codice in un file .cmd ed eseguirlo come parte del processo automatico (Descrivo il mio qui sotto)

@echo off
set ip_address_string="Indirizzo IPv4"
PER /F "usebackq" %%io IN (`nome host`) DO SET MYVAR=%%i
for /f "usebackq token=2 delim=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) fare (
    per /f "usebackq token=2 delim=:" %%Gin (`nslookup %%f ^| findstr /c:Nome`) fare (
        per /F "token=1 delimitazioni=." %%un in ("%%g") fare (
            per /F "token=1 delimitazioni= " %%bidone ("%%un") fare (
                Sistema informatico WMIC dove Nome="%miavar%" chiama Rinomina Nome="%%b"
                goto :eof
            )
        )
    )
)

Chiamo il mio script dal <FirstLogonCommands> sezione di ImageUnattend.xml.

<SynchronousCommand wcm:azione="aggiungere">
  <Ordine>5</Ordine>
  <Descrizione>Rinomina sistema</Descrizione>
  <Riga di comando>c:\extraelevate -c c:\extrarinomina-pc-da-dns.cmd</Riga di comando>
</Comando sincrono>

Per eseguirlo come amministratore utilizzo una piccola utility (chiamato elevate.exe) che fa questo (i comandi eseguiti durante l'installazione possono elevarsi senza far apparire un prompt!). Puoi ottenerlo da it's fonte originale

L'ultimo pezzo del puzzle per la mia configurazione è che modifico l'immagine di installazione di Windows per includere un file exe e un piccolo script powershell: questi consentono la copia di tutti gli altri programmi di installazione dalla rete. Il file exe è 'torrenti' che è un sysinternals (ora parte di Microsoft) utility per rimuovere l'avviso "questo file proviene da Internet, sei sicuro di volerlo eseguire"..

Ho anche il seguente script come file .ps1

copy-item -Path \wds-serverRemInstCustom*.* -Destination C:\Extra

Il mio primo 4 I comandi di accesso sono quindi i seguenti...

<SynchronousCommand wcm:azione="aggiungere">
  <Ordine>1</Ordine>
  <Descrizione>Nessuno standby durante la configurazione</Descrizione>
  <Riga di comando>powercfg -change standby-timeout-ac 0</Riga di comando>
</Comando sincrono>
<SynchronousCommand wcm:azione="aggiungere">
  <Ordine>2</Ordine>
  <Descrizione>Aggiungi le credenziali per l'accesso al server via rete</Descrizione>
  <Riga di comando>tasto cmd/aggiungi:wds-server /utente:wds-serveradministrator /pass:password123</Riga di comando>
</Comando sincrono>
<SynchronousCommand wcm:azione="aggiungere">
  <Ordine>3</Ordine>
  <Descrizione>Copia script e app dalla rete alla cartella Extra</Descrizione>
  <Riga di comando>C:\WindowsSystem32WindowsPowerShellv1.0powershell.exe -windowstyle nascosto -ExecutionPolicy ByPass -File C:\Extra  copyapps.ps1</Riga di comando>
</Comando sincrono>
<SynchronousCommand wcm:azione="aggiungere">
  <Ordine>4</Ordine>
  <Descrizione>Rimuovi l'avviso Internet dalle app copiate</Descrizione>
  <Riga di comando>C:\Extra  Streams64.exe -d -d -nobanner C:\Extra*.* /accepteula</Riga di comando>
</Comando sincrono>

Leave a Reply