[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет
  • Сообщений: 2582
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
В чате камрады bighead и goga8686 задались таким вопросом: "Как можно изменить имя компьютера в заливке на этапе разворачивания образа"?-Меня этот вопрос тоже заинтересовал, вот решил попробовать выложить своё решение. ab
Наваял батник _RenamePC.cmd для интеграции скрипта изменения имени компьютера в образ zalivka.wim
Идея такая.
Кладём свой образ заливки (zalivka.wim) рядом с _RenamePC.cmd и запускаем последний.
Монтируется образ и добавляется в реестр запись (в RunOnce) на запуск скрипта RPC.cmd, который копируется в образ.
При первом входе пользователя в систему отрабатывается из RunOnce скрипт "\Windows\RPC.cmd" и генерируется рандомное имя компьютера вида: VEQJWEK25860-PC
Значения при каждой "заливке" генерируются новые, из переменной %NewPCNAME%
setlocal EnableDelayedExpansion
for /l %%i in (1,1,7) do (
set /a d=!random!*26/32768+65
cmd /c exit !d!
set name=!name!!=exitcodeAscii!
)
set "NewPCNAME=%name%%random%-PC"
wmic computersystem where name="%computername%" call rename name="%NewPCNAME%"
После отработки скрипта запись из RunOnce соответственно удаляется и также удаляется и сам скрипт "\Windows\RPC.cmd"
Ну в общем идея как то такая... af
Проверил разворачивание образа с помощью WInst от Ander_73 (через wimlib), работает.


Последний раз редактировалось: sergeysvirid (2023-10-08 10:04), всего редактировалось 5 раз(а)

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3810
  • Репутация:127

    [+] [-]
Я таки нашёл свою мессагу (формирование случайного имени ПК) - https://usbtor.ru/viewtopic.php?p=96548#96548
( вот сам вопрос - https://usbtor.ru/viewtopic.php?p=96547#96547 )

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года
  • Сообщений: 386
  • Репутация:24

    [+] [-]
Вариант "красивого имени ag " со стандартным %random% :
set "manu="&for /f "skip=1 tokens=1" %%m in ('wmic path Win32_BaseBoard get Manufacturer') do if not defined manu set "manu=%%m"
set "NewPCNAME=%manu%%RANDOM%-PC"
wmic computersystem where name="%computername%" call rename name="%NewPCNAME%"
И получится, например, Asus9145-PC

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет
  • Сообщений: 2582
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
101216Я таки нашёл свою мессагу (формирование случайного имени ПК) - https://usbtor.ru/viewtopic.php?p=96548#96548
Ander_73,
Спасибо! Отлично, попробую! ay-Подправил батник (RPC.cmd) с учётом рекомендаций. Перезалил.


Последний раз редактировалось: sergeysvirid (2023-10-08 18:49), всего редактировалось 3 раз(а)

[Цитировать]

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
sergeysvirid, Спасибо за работу aa А что если в сам Winst добавить код, что бы при разворачивании заливки он в конце изменил имя?

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3810
  • Репутация:127

    [+] [-]
goga8686, зачем? Ты всё равно снимаешь галку перезагрузки, вот и напиши батник:
1. запуск Винст
2. код переименования
И не надо ничего ломать! ah

[Цитировать]

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
sergeysvirid, Приветствую aa А можно ваш RPC.cmd запустить вручную из под самой Windows?(лучше заранее спрошу, а то чёго то сыкотно ag )
На виртуалке у меня после применения к заливке , при первом старте выскочили две ошибки и после система не могла сама перезагрузиться. после принудительной перезагрузки, выпал bsod.
Запустить систему удалось только загрузившись в winpe и применив батник камрада bighead
@echo off
set sys=Windows\System32\config\SYSTEM
set /p var="New PC NAME?:"
echo/
set _drvs=& for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ^
if exist %%i:\%sys% if %%i: neq %SystemDrive% call set _drvs=%%_drvs%% %%i
if not defined _drvs echo Windows not found!& goto quit
echo List of Windows:
echo -------------------------------------------
for %%i in (%_drvs%) do echo %%i:\Windows
echo -------------------------------------------
set drv=& set /p "drv=Enter drive letter: "
echo/
if not exist %drv%:\%sys% echo Windows not found!& goto quit
reg load HKLM\TMP %drv%:\%sys%|| goto quit
reg add "HKLM\TMP\ControlSet001\Control\ComputerName\ComputerName" /v ComputerName /t REG_SZ /d "%var%" /f
reg add "HKLM\TMP\ControlSet001\Control\ComputerName\ActiveComputerName" /v ComputerName /t REG_SZ /d "%var%" /f
reg add "HKLM\TMP\ControlSet001\Services\Tcpip\Parameters" /v Hostname /t REG_SZ /d "%var%" /f
reg add "HKLM\TMP\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%var%" /f
reg unload HKLM\TMP
goto quit
:quit
echo/
pause
P.S применение батника RPC.cmd из под самой Windows, без интеграции так же приводит к ошибкам ac

[Цитировать]

    bighead
  • 29484
  • Стаж: 3 года
  • Сообщений: 386
  • Репутация:24

    [+] [-]
goga8686, мне кажется, что из-под самой системы лучше применять батники, которые меняют имя через wmic, я выше выкладывал вариант. Там уже можно и под ручной ввод сделать и под рандом или powershell.
Так как я у себя ввожу в домен компы, то мне использую au3 скрипт ув. Paravis.
До того как его скрипт попался делал через связку powershell + cmd.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3810
  • Репутация:127

    [+] [-]
Я просто осторожно выскажусь, что штатный метод через wmic выглядит таки более кошерно. Извините.

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет
  • Сообщений: 2582
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
goga8686,
Да, что-то с батником RPC.cmd не то... Доисправлялся. Было же всё нормалёк. aq-UPD:
Переделал батник RPC.cmd. Изменение имени компьютера выполняется через wmic
goga8686, Будет время, попробуйте.-Ссылка на архив (RenamePC.7z) в первом сообщении темы.

[Цитировать]

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
sergeysvirid, Спасибо. Проверил на Windows 7,10,11 . Отрабатывает нормально. Единственное что не меняет, так это имя NetBios, но я не знаю насколько это критично.

[Цитировать]

    Ander_73
  • 15549
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 3810
  • Репутация:127

    [+] [-]
sergeysvirid, кстати, в батнике в "шапке" пропущено критично-важное начало:
setlocal EnableDelayedExpansion
иначе переменные вида !random! просто мусор.
Добавлено через 2 минуты 9 секунд:
goga8686, ты менял имя через реестр или через wmic?

[Цитировать]

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
Ander_73, aa там где однёрки это из под винпе батником bighead
а остальное это последний батник RPC.cmd от sergeysvirid
p.s там где никогда ничем не менял имя, там отрабатывает нормально. странно... ))

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет
  • Сообщений: 2582
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
101356
кстати, в батнике в "шапке" пропущено критично-важное начало:
setlocal EnableDelayedExpansion
Ander_73,
Это в шапке просто не указано. В самом батнике (в RPC.cmd) эта строка прописана. bs
P.S.
Подправил и в шапке. bs-
101355Отрабатывает нормально. Единственное что не меняет, так это имя NetBios
goga8686,
А после перезагрузки картина не меняется?


Последний раз редактировалось: sergeysvirid (2023-10-08 09:22), всего редактировалось 1 раз

[Цитировать]

    goga8686
  • 15240
  • Стаж: 7 лет 10 месяцев
  • Сообщений: 889
  • Репутация:73

    [+] [-]
sergeysvirid, нет

Страница 1 из 3


Показать сообщения:    

Текущее время: 21-Ноя 15:08

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы