![通过 Windows 命令提示符附加 DNS 后缀](https://linux22.com/image/1253357/%E9%80%9A%E8%BF%87%20Windows%20%E5%91%BD%E4%BB%A4%E6%8F%90%E7%A4%BA%E7%AC%A6%E9%99%84%E5%8A%A0%20DNS%20%E5%90%8E%E7%BC%80.png)
在我的工作中,我们有两个特定于连接的 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