0根据保留的 DHCP 名称重命名 PC 的批处理脚本

我在独立服务器上使用 WDS 来设置新的 电脑 并重新成像 电脑 当他们最终无法修复时. 拥有大量 电脑 在我自己的房子里,在交换或升级硬件时偶尔重新映像它们很有用. 这个过程的大部分现在由 unattend.xml 文件自动化,但无人值守过程似乎不支持的一个步骤是重命名 电脑 回到他们原来的名字.

我的所有 电脑 使用正确的主机名进行静态 DHCP 预留 (这也注册在 DNS) 所以我想一定有办法提取这些信息并用它来重命名它们. 经过多次摆弄后,我制作了一个批处理脚本来执行此操作 (以管理员身份运行时).

简单地将以下代码粘贴到 .cmd 文件中并将其作为无人值守进程的一部分运行 (我在下面描述我的)

@echo 关闭
设置 ip_address_string="IPv4地址"
为/F "使用backq" %%输入 (`主机名`) DO SET MYVAR=%%i
/f "usebackq 令牌=2 delims=:" %%输入 (`ipconfig ^| 查找字符串 /c:%ip_address_string%`) 做 (
    对于 /f "usebackq 令牌=2 delims=:" %%杜松子酒 (`nslookup %%f ^| 查找字符串 /c:姓名`) 做 (
        对于 /F "令牌=1 delims=。" %%一进 ("%%g") 做 (
            对于 /F "代币=1 delims= " %%输入 ("%%一") 做 (
                WMIC ComputerSystem 其中 Name="%米瓦%" 调用重命名名称="%%b"
                去 :eof
            )
        )
    )
)

我从 <FirstLogonCommands> ImageUnattend.xml 部分.

<同步命令 wcm:动作="add">
  <命令>5</命令>
  <描述>重命名系统</描述>
  <命令行>Ç:\附加提升 -c c:\附加重命名-pc-from-dns.cmd</命令行>
</同步命令>

要以管理员身份运行它,我使用了一些实用程序 (名为elevate.exe) 这样做 (在安装过程中运行的命令可以在不弹出提示的情况下提升!). 你可以从它的 原始资料

我的设置的最后一个难题是我修改了 Windows 安装映像以包含一个 exe 文件和一个小的 poweershell 脚本——这些允许从网络复制所有其他安装程序. exe文件是'' 这是一个系统内部 (现在是微软的一部分) 用于删除“此文件来自互联网,你确定要运行它吗”警告的实用程序.

我还有以下脚本作为 .ps1 文件

copy-item -Path \wds-serverRemInstCustom*.* -Destination C:\附加功能

我的第一次 4 LogonCommands 如下...

<同步命令 wcm:动作="add">
  <命令>1</命令>
  <描述>设置期间无待机</描述>
  <命令行>powercfg -更改待机超时-交流 0</命令行>
</同步命令>
<同步命令 wcm:动作="add">
  <命令>2</命令>
  <描述>添加凭据以通过网络访问服务器</描述>
  <命令行>cmd键/添加:wds-服务器/用户:wds-serveradministrator/pass:密码123</命令行>
</同步命令>
<同步命令 wcm:动作="add">
  <命令>3</命令>
  <描述>将脚本和应用程序从网络复制到 extras 文件夹</描述>
  <命令行>C:\WindowsSystem32WindowsPowerShellv1.0powershell.exe -windowstyle hidden -ExecutionPolicy ByPass -File C:\附加  copyapps.ps1</命令行>
</同步命令>
<同步命令 wcm:动作="add">
  <命令>4</命令>
  <描述>从复制的应用程序中删除互联网警告</描述>
  <命令行>C:\附加  Streams64.exe -d -d -nobanner C:\附加*.* /accepteula</命令行>
</同步命令>

发表评论