0Batch-Skript zum Umbenennen des PCs basierend auf dem reservierten DHCP-Namen

Ich verwende WDS auf einem eigenständigen Server, um neue einzurichten PCs und neu zu bebildern PCs wenn sie irreparabel verstümmelt sind. Mit einer guten Anzahl von PCs In meinem eigenen Haus ist es sinnvoll, sie gelegentlich beim Austausch oder Upgrade von Hardware neu abzubilden. Der größte Teil dieses Prozesses wird jetzt durch eine Datei unattend.xml automatisiert, aber ein Schritt, den der unbeaufsichtigte Prozess anscheinend nicht unterstützt, ist das Umbenennen PCs zurück zu ihrem ursprünglichen Namen.

Alle meine PCs haben statische DHCP-Reservierungen mit ihrem korrekten Hostnamen (die auch registriert ist in DNS) Also dachte ich mir, dass es eine Möglichkeit geben muss, diese Informationen abzurufen und sie zu verwenden, um sie umzubenennen. Nach langem Herumtüfteln habe ich ein Batch-Skript erstellt, das dies tut (wenn als admin ausgeführt).

Fügen Sie einfach den folgenden Code in eine .cmd-Datei ein und führen Sie ihn als Teil Ihres unbeaufsichtigten Prozesses aus (Ich beschreibe meine unten)

@echo aus
set ip_address_string="IPv4-Adresse"
FÜR /F "usebackq" %%ich IN (`Hostname`) SETZEN SIE MYVAR=%%i
für /f "usebackq-Token=2 Delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) tun (
    für /f "usebackq-Token=2 Delims=:" %%Gin (`nslookup %%f ^| findstr /c:Name`) tun (
        für /F "tokens=1 delims=." %%ein in ("%%g") tun (
            für /F "Token=1 Delims= " %%Behälter ("%%ein") tun (
                WMIC ComputerSystem wobei Name="%myvar%" call Name umbenennen="%%b"
                goto :eof
            )
        )
    )
)

Ich rufe mein Skript von der <FirstLogonCommands> Abschnitt von ImageUnattend.xml.

<SynchronousCommand wcm:Aktion="hinzufügen">
  <Auftrag>5</Auftrag>
  <Beschreibung>System umbenennen</Beschreibung>
  <Befehlszeile>c:\Extraselevate -c c:\extrasrename-pc-from-dns.cmd</Befehlszeile>
</Synchroner Befehl>

Um es als Admin auszuführen, verwende ich ein kleines Dienstprogramm (namens elevate.exe) das macht das (Befehle, die während des Setups ausgeführt werden, können erhöht werden, ohne dass eine Eingabeaufforderung angezeigt wird!). Sie können es von ihm bekommen Originalquelle

Das letzte Puzzleteil für mein Setup besteht darin, dass ich das Windows-Installationsabbild so ändere, dass es eine exe-Datei und ein kleines Powereershell-Skript enthält – diese ermöglichen das Kopieren aller anderen Installer aus dem Netzwerk. Die exe-Datei ist ‘Bäche’, das ist ein Sysinternals (jetzt Teil von Microsoft) Dienstprogramm zum Entfernen der Warnung „Diese Datei stammt aus dem Internet, möchten Sie sie wirklich ausführen“.

Ich habe auch das folgende Skript als .ps1-Datei

copy-item -Pfad \wds-serverRemInstCustom*.* -Ziel C:\Extras

Mein erstes 4 LogonCommands sind dann wie folgt…

<SynchronousCommand wcm:Aktion="hinzufügen">
  <Auftrag>1</Auftrag>
  <Beschreibung>Kein Standby während der Einrichtung</Beschreibung>
  <Befehlszeile>powercfg -change standby-timeout-ac 0</Befehlszeile>
</Synchroner Befehl>
<SynchronousCommand wcm:Aktion="hinzufügen">
  <Auftrag>2</Auftrag>
  <Beschreibung>Anmeldedaten für den Zugriff auf den Server über das Netzwerk hinzufügen</Beschreibung>
  <Befehlszeile>cmdkey /add:wds-server /user:wds-serveradministrator /pass:Passwort123</Befehlszeile>
</Synchroner Befehl>
<SynchronousCommand wcm:Aktion="hinzufügen">
  <Auftrag>3</Auftrag>
  <Beschreibung>Kopieren Sie Skripte und Apps aus dem Netzwerk in den Extras-Ordner</Beschreibung>
  <Befehlszeile>C:\WindowsSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden -ExecutionPolicy ByPass -File C:\Extras  copyapps.ps1</Befehlszeile>
</Synchroner Befehl>
<SynchronousCommand wcm:Aktion="hinzufügen">
  <Auftrag>4</Auftrag>
  <Beschreibung>Internetwarnung von kopierten Apps entfernen</Beschreibung>
  <Befehlszeile>C:\Extras  Streams64.exe -d -d -nobanner C:\Extras*.* /accepteula</Befehlszeile>
</Synchroner Befehl>

Leave a Reply