在 Windows 局域网中批量更改 IP 地址,通常有几种方法可以实现。这些方法可以帮助你通过脚本或工具批量修改多台计算机的 IP 设置。下面是一些常见的方法和工具:
Windows 局域网批量修改 IPv4 + IPv6 地址 方案汇总
前置通用前提
- 修改网卡 IP 需要管理员权限;
- 远程执行依赖防火墙放行对应端口、账号具备管理员权限;
- 网卡名称保持一致(如
以太网),脚本可自适应网卡更佳; - 远程修改 IP 极易出现:改完网段失联,建议分批执行、预留回滚方案。
一、本地脚本方案(本机执行,无远程依赖)
1. netsh(CMD/BAT,全 Windows 兼容,同时支持 IPv4/IPv6)
:: IPv4静态配置
netsh interface ipv4 set address "以太网" static 192.168.1.100 255.255.255.0 192.168.1.1
netsh interface ipv4 set dnsservers "以太网" static 223.5.5.5
:: IPv6静态配置
netsh interface ipv6 set address "以太网" 2409:xxxx::100/64
netsh interface ipv6 set route ::/0 "以太网" 2409:xxxx::1
netsh interface ipv6 set dnsservers "以太网" static 2400:3200::1
2. PowerShell 脚本(现代首选,原生支持 CIDR,IPv6 体验更佳)
# IPv4
New-NetIPAddress -InterfaceAlias "以太网" -IPAddress 192.168.1.100 -PrefixLength 24 -DefaultGateway 192.168.1.1
Set-DnsClientServerAddress -InterfaceAlias "以太网" -ServerAddresses "223.5.5.5","223.6.6.6"
# IPv6
New-NetIPAddress -InterfaceAlias "以太网" -IPAddress "2409:xxxx::100" -PrefixLength 64
Set-NetRoute -AddressFamily IPv6 -InterfaceAlias "以太网" -DestinationPrefix ::/0 -NextHop "2409:xxxx::1"
Set-DnsClientServerAddress -InterfaceAlias "以太网" -AddressFamily IPv6 -ServerAddresses "2400:3200::1"
二、远程批量执行方案(一台运维主机下发指令,工作组通用)
3. PsExec(Sysinternals)远程调用 CMD/netsh
psexec @pc_list.txt -u Admin -p xxx netsh interface ipv4 set address "以太网" static ...
4. PowerShell Remoting(WinRM,微软原生远程标准)
Invoke-Command 远程调用 PowerShell 网络模块,双栈最优远程方案
Enable-PSRemoting;防火墙放行 5985 (HTTP)/5986 (HTTPS);工作组需要配置 TrustedHosts5. WMI / CIM 远程调用(wmic / Get-CimInstance)
三、AD 活动目录域环境专属方案
6. 组策略首选项 GPP(Group Policy Preferences)
7. SCCM / Microsoft Intune 部署脚本
四、网络基础设施层面(不强制本机静态 IP,长期运维最优)
8. DHCPv4 静态保留 + DHCPv6 静态绑定
- DHCP 服务器:IPv4 MAC 地址绑定固定地址
- DHCPv6:DUID 绑定固定 IPv6 地址 / 前缀
✅ 优点:零客户端操作;重装系统、更换网卡依然获取固定地址;统一在服务器维护;同时管理双栈❌ 缺点:业务如果强制要求操作系统本地固化静态 IP,则不能使用;需要搭建支持 DHCPv6 服务器
补充:部分工业场景、等保合规场景,要求电脑必须设置静态 IP,该方案不适用。
五、图形化第三方工具(免代码操作)
- LanHelper:扫描局域网主机,远程批量执行命令,加载 netsh 脚本配置双栈
- Advanced IP Scanner + 远程执行插件
- NetSetMan:擅长本机多配置文件切换,远程批量能力弱
✅ 优点:可视化操作,适合不熟悉脚本人员❌ 缺点:免费版功能受限;大批量稳定性参差不齐;原生对 IPv6 支持普遍偏弱
六、系统部署阶段预置(新机批量装机)
9. MDT / WDS 任务序列
方案关键能力对比表(增加 IPv6 适配维度)
| 方案 | 支持工作组 | 远程执行 | 一对一分配不同 IP | 原生支持 IPv6 | 推荐规模 |
|---|---|---|---|---|---|
| 本地 BAT/netsh | ✅ | ❌ | ✅ | ✅ | 少量现场操作 |
| 本地 PowerShell | ✅ | ❌ | ✅ | ✅ | 机房现场部署 |
| PsExec 远程 | ✅ | ✅ | ✅ | ✅ | ≤200 台中小型局域网 |
| WinRM(Invoke-Command) | ✅ | ✅ | ✅ | ✅ | 常态化运维首选 |
| GPP 组策略 | ❌需 AD 域 | ✅ | ❌统一模板 | ✅ | 全网统一网段场景 |
| SCCM/Intune | 域 | ✅ | ✅ | ✅ | 数百台以上大型企业 |
| DHCPv4/v6 绑定 | ✅ | ❌ | ✅ | ✅ | 长期运维首选(不强制本地静态 IP) |
重要工程风险提示(双栈环境特有坑)
- 远程修改 IP 网段失联风险最高
远程修改 IPv4 后,若新网段和运维主机不通,会话立刻断开;IPv6 同理,建议现场执行或分批小批量测试。
- 双栈修改顺序建议:优先 IPv4,再配置 IPv6,避免路由冲突。
- 网卡名称统一:区分「以太网」「以太网 2」,中英文名称不要混用。
- IPv6 网关注意:无状态自动配置 (SLAAC) 与静态路由不要同时启用,容易路由紊乱。
- 若需要每台电脑独立 IPv4 + 独立 IPv6 成对分配:唯一可行路线:CSV 清单 + PowerShell + WinRM/PsExec 远程脚本。
一、CSV 清单模板 PC_List.csv
字段说明:PrefixLength4:IPv4 前缀(24=255.255.255.0)IPv6Address:完整 IPv6 地址PrefixLength6:IPv6 前缀长度(常见 64)Dns4:IPv4 DNS(多个逗号分隔)Dns6:IPv6 DNS(多个逗号分隔)
ComputerName,IPv4,PrefixLength4,Gateway4,IPv6Address,PrefixLength6,Gateway6,Dns4,Dns6
PC01,192.168.1.101,24,192.168.1.1,2409:xxxx::101,64,2409:xxxx::1,"223.5.5.5,223.6.6.6","2400:3200::1"
PC02,192.168.1.102,24,192.168.1.1,2409:xxxx::102,64,2409:xxxx::1,"223.5.5.5,223.6.6.6","2400:3200::1"
PC03,192.168.1.103,24,192.168.1.1,2409:xxxx::103,64,2409:xxxx::1,"223.5.5.5,223.6.6.6","2400:3200::1"
二、PowerShell 远程批量脚本(WinRM Invoke-Command)
Batch_SetIP_DualStack.ps1前置条件(目标机器全部完成)
- 启用 WinRM:
Enable-PSRemoting -Force - 防火墙放行 WinRM(5985)
- 工作组环境执行:
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force - 使用本地管理员账号,目标网卡名称统一为 以太网
<#
批量远程配置 IPv4+IPv6 双栈静态地址
网卡名称固定:以太网
#>
# ===================== 配置区 =====================
$CsvPath = "$PSScriptRoot\PC_List.csv"
$NetInterface = "以太网"
$AdminUser = "Administrator"
$AdminPwd = "你的管理员密码"
# ==================================================
# 构建凭据
$securePwd = ConvertTo-SecureString $AdminPwd -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential ($AdminUser, $securePwd)
# 读取清单
$pcList = Import-Csv -Path $CsvPath -Encoding UTF8
foreach ($pc in $pcList)
{
$targetPC = $pc.ComputerName
Write-Host "`n【开始处理】$targetPC" -ForegroundColor Cyan
# 测试连通
if(-not (Test-Connection -ComputerName $targetPC -Count 1 -Quiet -ErrorAction SilentlyContinue))
{
Write-Host "$targetPC Ping不通,跳过" -ForegroundColor Red
continue
}
try
{
Invoke-Command -ComputerName $targetPC -Credential $cred -ScriptBlock {
param(
$ifName,
$ip4,$pf4,$gw4,
$ip6,$pf6,$gw6,
$dns4,$dns6
)
#region 清空原有静态IP(可选,注释掉则保留原有地址)
Get-NetIPAddress -InterfaceAlias $ifName -AddressFamily IPv4 -ErrorAction SilentlyContinue | Remove-NetIPAddress -Confirm:$false
Get-NetIPAddress -InterfaceAlias $ifName -AddressFamily IPv6 -ErrorAction SilentlyContinue | Remove-NetIPAddress -Confirm:$false
Get-NetRoute -InterfaceAlias $ifName -AddressFamily IPv4 -DestinationPrefix 0.0.0.0/0 -ErrorAction SilentlyContinue | Remove-NetRoute -Confirm:$false
Get-NetRoute -InterfaceAlias $ifName -AddressFamily IPv6 -DestinationPrefix ::/0 -ErrorAction SilentlyContinue | Remove-NetRoute -Confirm:$false
#endregion
# ========== IPv4 ==========
New-NetIPAddress -InterfaceAlias $ifName `
-IPAddress $ip4 `
-PrefixLength $pf4 `
-DefaultGateway $gw4 `
-AddressFamily IPv4 `
-ErrorAction Stop
$dnsArr4 = $dns4 -split ","
Set-DnsClientServerAddress -InterfaceAlias $ifName -ServerAddresses $dnsArr4
# ========== IPv6 ==========
New-NetIPAddress -InterfaceAlias $ifName `
-IPAddress $ip6 `
-PrefixLength $pf6 `
-AddressFamily IPv6 `
-ErrorAction Stop
# 添加IPv6默认网关
Set-NetRoute -DestinationPrefix ::/0 `
-InterfaceAlias $ifName `
-NextHop $gw6 `
-AddressFamily IPv6 `
-ErrorAction Stop
$dnsArr6 = $dns6 -split ","
Set-DnsClientServerAddress -InterfaceAlias $ifName -AddressFamily IPv6 -ServerAddresses $dnsArr6
Write-Host "[$env:COMPUTERNAME] IPv4/IPv6 配置完成" -ForegroundColor Green
} -ArgumentList $NetInterface,
$pc.IPv4,$pc.PrefixLength4,$pc.Gateway4,
$pc.IPv6Address,$pc.PrefixLength6,$pc.Gateway6,
$pc.Dns4,$pc.Dns6
}
catch
{
Write-Host "【失败】$targetPC 错误信息:$_" -ForegroundColor Red
}
}
Write-Host "`n==== 全部任务执行完毕 ====" -ForegroundColor Yellow
三、备选方案:PsExec 版本(不用开启 WinRM)
适合无法启用 WinRM、只能使用 IPC$ 环境把下面脚本另存为Batch_SetIP_PsExec.ps1依赖:psexec.exe 和脚本放在同一目录
$CsvPath = "$PSScriptRoot\PC_List.csv"
$NetInterface = "以太网"
$AdminUser = "Administrator"
$AdminPwd = "你的管理员密码"
$pcList = Import-Csv $CsvPath -Encoding UTF8
foreach ($pc in $pcList)
{
$cn = $pc.ComputerName
Write-Host "处理 $cn"
$scriptText = @"
netsh interface ipv4 set address "$NetInterface" static $($pc.IPv4) $($pc.PrefixLength4) $($pc.Gateway4)
netsh interface ipv4 set dnsservers "$NetInterface" static $($pc.Dns4.Split(',')[0])
netsh interface ipv4 add dnsservers "$NetInterface" $($pc.Dns4.Split(',')[1]) index=2
netsh interface ipv6 set address "$NetInterface" $($pc.IPv6Address)/$($pc.PrefixLength6)
netsh interface ipv6 set route ::/0 "$NetInterface" $($pc.Gateway6)
netsh interface ipv6 set dnsservers "$NetInterface" static $($pc.Dns6.Split(',')[0])
"@
# 生成临时bat
$batFile = Join-Path $env:TEMP "SetIP_$($cn).bat"
$scriptText | Out-File $batFile -Encoding ASCII
# PsExec远程执行
.\psexec.exe \\$cn -u $AdminUser -p $AdminPwd -h cmd /c $batFile
}
⚠️极高风险提醒
- 远程修改 IPv4 网段后,如果运维主机不在同一网段,会话直接断开,剩余设备无法继续执行!建议分批测试。
- 如果网卡名称不是「以太网」,统一修改脚本内
$NetInterface。 - 建议先拿 1 台 PC 做测试,验证无误再批量运行。
- 若需要保留原有地址不清除,删除脚本中【清空原有静态 IP】region 代码块。
- IPv6 如不需要网关,把 CSV 网关字段留空,并删除对应 IPv6 网关代码。
在 Windows 局域网中批量更改 IP 地址,通常有几种方法可以实现。这些方法可以帮助你通过脚本或工具批量修改多台计算机的 IP 设置。下面是一些常见的方法和工具:
1. 使用 PowerShell 脚本
PowerShell 是一个强大的工具,可以用来批量管理计算机和网络设置。你可以编写 PowerShell 脚本来更改多台计算机的 IP 地址。
示例 PowerShell 脚本(假设你要修改某个网络接口的 IP 地址):
$computers = @("Computer1", "Computer2", "Computer3") # 目标计算机列表
$newIP = "192.168.1.100"
$subnet = "255.255.255.0"
$gateway = "192.168.1.1"
foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer -ScriptBlock {
$InterfaceAlias = "Ethernet" # 网络接口名称,可以根据实际情况修改
$Interface = Get-NetAdapter | Where-Object { $_.Name -eq $InterfaceAlias }
New-NetIPAddress -InterfaceIndex $Interface.IfIndex -IPAddress $using:newIP -PrefixLength 24 -DefaultGateway $using:gateway
}
}
这个脚本会连接到每台目标计算机,并修改网络接口的 IP 地址。你需要确保你有远程执行脚本的权限,并且目标计算机启用了 PowerShell Remoting。
2. 使用 Netsh 命令
你还可以使用 netsh 命令来更改 IP 设置。通过批处理脚本,可以批量执行这些命令来修改多台计算机的 IP 地址。
批处理脚本示例:
@echo off
setlocal
set IP=192.168.1.100
set SUBNET=255.255.255.0
set GATEWAY=192.168.1.1
for /f %%i in (computers.txt) do (
echo Changing IP on %%i
psexec \\%%i netsh interface ip set address "Ethernet" static %IP% %SUBNET% %GATEWAY%
)
endlocal
这个批处理脚本会从 computers.txt 文件中读取目标计算机列表,并使用 psexec 工具在每台计算机上执行 netsh 命令来更改 IP 地址。
3. 使用 PsExec 工具
PsExec 是 Sysinternals 套件中的一款工具,可以远程执行命令。你可以通过 PsExec 执行批量命令来修改 IP 地址。
使用 PsExec 执行命令:
- 首先,将
PsExec工具复制到你的计算机上。 - 然后创建一个批处理文件或直接使用命令行来执行命令。
例如,修改目标计算机的 IP 地址:
psexec \\Computer1 netsh interface ip set address "Ethernet" static 192.168.1.100 255.255.255.0 192.168.1.1
psexec \\Computer2 netsh interface ip set address "Ethernet" static 192.168.1.101 255.255.255.0 192.168.1.1
4. 使用第三方工具
如果你不希望编写脚本,也可以使用一些第三方软件来批量管理局域网中的 IP 地址。以下是一些常见的网络管理工具:
- Advanced IP Scanner: 这是一个 Windows 网络扫描工具,可以扫描整个局域网中的所有设备。虽然它本身不直接支持批量修改 IP 地址,但它可以帮助你快速识别网络中的设备,然后你可以手动进行修改。
- NirSoft's CurrPorts: 这个工具可以查看当前计算机的所有网络连接,虽然它的主要功能不是批量修改 IP,但它可以帮助你监控和管理网络连接。
5. DHCP 服务器管理
如果你的网络中有 DHCP 服务器,可以通过配置 DHCP 服务器来为设备分配固定的 IP 地址。这样,设备通过 DHCP 自动获取 IP 地址时,可以确保它们始终分配到预定的地址。
例如,在 Windows Server 上配置 DHCP 服务器,可以通过“DHCP 服务器管理工具”来设置静态 IP 地址租约。
小结
对于批量更改局域网中多台计算机的 IP 地址,PowerShell 脚本和 netsh 命令配合 PsExec 是两种常用且强大的方法。如果不熟悉脚本,使用第三方工具如 Advanced IP Scanner 也可以简化操作。
继续补充一些常见的命令方法,用于批量修改 Windows 局域网中计算机的 IP 地址:
6. 使用 Windows 管理工具(如 WMI)
Windows Management Instrumentation (WMI) 是一个用于管理 Windows 操作系统和应用程序的框架。通过 WMI,你可以远程修改计算机的网络设置。
使用 PowerShell 和 WMI 修改 IP 地址:
你可以通过 PowerShell 使用 Set-WmiInstance 来更改网络接口的 IP 地址。
PowerShell 示例:
$computers = @("Computer1", "Computer2", "Computer3") # 目标计算机列表
$interfaceName = "Ethernet" # 网卡名称,需根据实际网卡名称调整
$newIP = "192.168.1.100"
$subnet = "255.255.255.0"
$gateway = "192.168.1.1"
foreach ($computer in $computers) {
$wmiQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Description = '$interfaceName' AND IPEnabled = True"
$adapter = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $computer -Filter $wmiQuery
if ($adapter) {
$adapter.EnableStatic($newIP, $subnet)
$adapter.SetGateways($gateway)
Write-Host "IP Address changed on $computer"
} else {
Write-Host "No active network adapter found on $computer"
}
}
该脚本通过 WMI 查询并修改目标计算机上指定网卡的 IP 地址和网关。
7. 使用 PowerShell 设置 DHCP 服务器(如果启用 DHCP)
如果你想通过 DHCP 来自动为设备分配静态 IP 地址,可以在 PowerShell 中使用 DHCP Server 模块。
PowerShell 示例:
$dhcpServer = "192.168.1.1" # DHCP 服务器 IP 地址
$startRange = "192.168.1.100" # 地址池开始
$endRange = "192.168.1.200" # 地址池结束
Add-DhcpServerv4Scope -Name "StaticScope" -StartRange $startRange -EndRange $endRange -SubnetMask "255.255.255.0"
Set-DhcpServerv4Scope -ScopeId "StaticScope" -State Active
该脚本会在指定的 DHCP 服务器上创建一个静态 IP 地址范围,并将其启用。需要先安装 DHCP Server 功能,并配置适当的 DHCP 服务器。
8. 使用 PsExec 批量修改 IP 地址
如果你没有使用 PowerShell 或 WMI,而是希望直接利用命令行工具来远程修改 IP 地址,PsExec 是非常有用的。你可以在目标计算机上执行 netsh 或其他命令来修改网络设置。
批量修改 IP 地址的批处理脚本:
@echo off
setlocal
set IP=192.168.1.100
set SUBNET=255.255.255.0
set GATEWAY=192.168.1.1
for /f %%i in (computers.txt) do (
echo Changing IP on %%i
psexec \\%%i netsh interface ip set address "Ethernet" static %IP% %SUBNET% %GATEWAY%
)
endlocal
在这个脚本中,computers.txt 文件包含目标计算机的主机名或 IP 地址,psexec 会在这些计算机上运行 netsh 命令来修改 IP 设置。
9. 使用 netsh 配置 DHCP 自动获取 IP 地址
如果你希望某台计算机从 DHCP 服务器获取 IP 地址,可以使用 netsh 命令配置网络接口为自动获取 IP 地址。
批处理脚本:
@echo off
setlocal
for /f %%i in (computers.txt) do (
echo Setting DHCP on %%i
psexec \\%%i netsh interface ip set address "Ethernet" dhcp
)
endlocal
这个脚本会远程设置计算机的网络接口为使用 DHCP 自动获取 IP 地址。
10. 使用 Group Policy (组策略) 管理网络设置
如果你的网络中有多个计算机且都连接到域,可以通过 Group Policy 来统一配置网络设置。
- 打开 Group Policy Management 控制台。
- 创建一个新的 GPO(组策略对象)。
- 在 GPO 中设置 Computer Configuration → Preferences → Control Panel Settings → Network Options 来配置静态 IP 地址或设置 DHCP。
- 将该 GPO 应用到需要批量修改 IP 地址的计算机组。
11. 使用 SCCM(System Center Configuration Manager)
如果你有 Microsoft SCCM 环境,SCCM 可以通过软件部署和配置管理来批量修改计算机的 IP 地址。你可以通过创建自定义脚本包来推送 IP 地址更改任务。
12. 批量修改 DNS 服务器设置
如果你需要批量修改 DNS 服务器地址,可以使用 netsh 命令或 PowerShell 来批量更改。下面是通过 PowerShell 批量修改 DNS 服务器地址的示例:
$computers = @("Computer1", "Computer2", "Computer3")
$dnsServer = "8.8.8.8" # 新的 DNS 服务器地址
foreach ($computer in $computers) {
Invoke-Command -ComputerName $computer -ScriptBlock {
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses $using:dnsServer
}
}
该脚本会远程修改每台计算机的 DNS 服务器地址。
小结
这些命令和工具方法可以帮助你批量修改局域网中多台计算机的 IP 地址和其他网络设置。你可以根据自己的需求选择合适的方法, PowerShell、netsh 命令、PsExec 和 Group Policy 是最常见且强大的方法。如果你的环境使用 SCCM 或 DHCP,可以通过它们进一步简化管理。

浙公网安备 33010602011771号