通过 Windows 命令提示符附加 DNS 后缀

通过 Windows 命令提示符附加 DNS 后缀

在我的工作中,我们有两个特定于连接的 DNS 后缀。lhs.local 和 cis.local。我正在尝试编写一个批处理文件,它将处理部署计算机时需要完成的许多常见管理任务,而附加这些任务就是其中之一。

是否有命令可以通过编程来执行此操作?

答案1

通过这个帖子

为了远程向 TCP/IP 连接添加 DNS 后缀,您只需要一个 IP 地址列表和以下命令:

wmic /USER:administrator /PASSWORD:adminpassword /node:@c:\iplist.txt nicconfig call SetDNSSuffixSearchOrder (mydomain.com)

其中C:\iplist.txt包含 IP 地址列表,以行分隔。

另一种方法是通过添加注册表

reg add HKLM\System\currentcontrolset\services\tcpip\parameters /v “NV Domain” /d “mydomain.com” /f

有一个Microsoft 知识库条目也同样如此。

答案2

根据 Sathya 的回答和其他资源,我写了以下内容:

@echo off
SETLOCAL EnableDelayedExpansion

:: Input here the additional suffix
set suffix=your.own.suffix

:: Get existing DNS suffixes
FOR /F "usebackq tokens=1,2* delims= " %%A in (`reg QUERY HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /V SearchList ^| findstr REG_SZ`) do ( 
    set OLD_DNS=%%C
)

:: Check if it starts with our suffix
set OK=NO
FOR /F "tokens=1,2* delims=," %%A in ("%OLD_DNS%") do (
    if "%%A" == "%suffix%" set OK=YES
)

:: Add our suffix first if it's not there
if "%OK%" == "NO" (
    echo Conf KO: %OLD_DNS%
    reg add HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /V SearchList /D "%suffix%,%OLD_DNS%" /F
) else (
    echo Conf OK: %OLD_DNS%
)

ipconfig /flushdns

相关内容