Вот что я пытаюсь сделать ... если это можно сделать с помощью только партии ... на данный момент?
Вместо фактического переименования клиента здесь из оператора netdom, я хочу вставить переменную% strComputer% в файл xml или, по крайней мере, заменить текст этой же переменной. XML-файл будет файлом unattend.xml, используемым для SysPrepping клиента Windows 7.
Это раздел, который я хотел бы изменить:
% StrComputername%
В сущности, оператор insert_name будет для нового имени, которое будет вставлено в файл xml вместо команды netdom.exe.
Размещенный код работает чертовски хорошо в моем процессе автоматического переименования! Шаги описывают, как работает скрипт.
Обратите внимание на операторы for /f и метку:insert_name. Все остальное можно игнорировать.
- Получает MAC-адрес, используя WMIC
- Сравнивает этот MAC-адрес с файлом pdqmac2pcname.txt для совпадения или несоответствия MAC-адреса.
- Когда MAC-адрес совпадает, имя передается в оператор netdom как переменная newname% strComputername%
- тогда скрипт перейдет к insert_name и
- Если MAC-адрес обнаружен с именем компьютера, сценарий переходит на метку kill_autologon, чтобы принудительно отключить компьютер. Эта процедура предотвращает присоединение неправильно переименованного компьютера к домену под случайно сгенерированным именем SysPreped.
- Если имя не найдено или MAC-адрес не совпадает, компьютер не присоединится к домену и
- компьютер перезагружается к экрану входа в систему, чтобы его можно было переименовать вручную и присоединить к домену.
setlocal enabledelayedexpansion
FOR /F "skip=1 tokens=*" %%I IN ('WMIC Path Win32_NetworkAdapter Where "NetConnectionID='Local Area Connection'" Get MACAddress') DO IF NOT DEFINED MACAddress SET MACAddress=%%I
FOR /F "usebackq delims=, tokens=1,2" %%J IN (`type C:\rename_computer\pdqmac2pcname.txt`) DO IF %MACAddress% EQU %%J SET strComputername=%%K && GOTO insert_name
)
goto kill_autologon
:insert_name
C:\windows\system32\netdom.exe renamecomputer %COMPUTERNAME% /NewName:%strComputername% /FORCE
goto shutdown
:kill_autologon
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f
:shutdown
shutdown -r -t 0
exit