在 Windows 局域网中批量更改 IP 地址,通常有几种方法可以实现。这些方法可以帮助你通过脚本或工具批量修改多台计算机的 IP 设置。下面是一些常见的方法和工具:

 

Windows 局域网批量修改 IPv4 + IPv6 地址 方案汇总

覆盖工作组 / AD 域,同时支持静态 IPv4、静态 IPv6、前缀、网关、DNS;区分统一配置一对一分配不同 IP,附带优缺点、适用场景,同时标注 IPv6 适配情况。
前置通用前提
  1. 修改网卡 IP 需要管理员权限
  2. 远程执行依赖防火墙放行对应端口、账号具备管理员权限;
  3. 网卡名称保持一致(如以太网),脚本可自适应网卡更佳;
  4. 远程修改 IP 极易出现:改完网段失联,建议分批执行、预留回滚方案。

一、本地脚本方案(本机执行,无远程依赖)

适合机房工控机、现场操作、不方便开放远程端口场景

1. netsh(CMD/BAT,全 Windows 兼容,同时支持 IPv4/IPv6)

batch
 
 
 
:: 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
 
✅ 优点:Win7~Win11、Server 全系原生支持,同时兼容双栈
 
❌ 缺点:只能本机运行;大批量需要拷贝脚本到目标机器

2. PowerShell 脚本(现代首选,原生支持 CIDR,IPv6 体验更佳)

powershell
 
 
 
# 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"
 
✅ 优点:语法规范、支持判断逻辑、日志输出、轻松读写 CSV 清单实现一对一分配 IP
 
❌ 缺点:PowerShell 执行策略限制;精简系统可能受限

二、远程批量执行方案(一台运维主机下发指令,工作组通用)

3. PsExec(Sysinternals)远程调用 CMD/netsh

原理:IPC$ 139/445 端口远程执行命令,同时下发 IPv4+IPv6 配置
batch
 
 
 
psexec @pc_list.txt -u Admin -p xxx netsh interface ipv4 set address "以太网" static ...
 
✅ 优点:不用提前部署 WinRM;工作组、域环境通用;兼容 netsh 双栈命令
 
❌ 缺点:依赖文件共享;防火墙、杀毒软件极易拦截;新版 Windows 加固环境 IPC$ 不稳定;IPv6 远程执行无额外障碍,但跨网段 IPv6 链路连通性需要预先保障

4. PowerShell Remoting(WinRM,微软原生远程标准)

Invoke-Command 远程调用 PowerShell 网络模块,双栈最优远程方案
 
✅ 优点:加密传输、稳定性高于 PsExec;原生支持 IPv6 远程访问(WinRM 可监听 IPv6 地址);支持并发
 
❌ 缺点:目标机预先执行Enable-PSRemoting;防火墙放行 5985 (HTTP)/5986 (HTTPS);工作组需要配置 TrustedHosts

5. WMI / CIM 远程调用(wmic / Get-CimInstance)

底层 Windows 管理接口,可远程修改 IPv4/IPv6 网络配置
 
✅ 优点:系统自带,无需第三方工具
 
❌ 缺点:语法极其繁琐;大批量并发性能差;微软逐步弱化 wmic;IPv6 配置操作复杂度很高,不推荐大规模使用

三、AD 活动目录域环境专属方案

6. 组策略首选项 GPP(Group Policy Preferences)

路径:计算机配置 → 首选项 → 控制面板设置 → 网络接口
 
可同时配置 IPv4 静态地址、IPv6 静态地址、双栈 DNS
 
✅ 优点:设备开机自动应用、集中管控、无需人工触发
 
致命短板:只能下发同一套 IP 模板;无法给每台设备分配独立不同 IP;仅适合全网统一网段场景;工作组不可用

7. SCCM / Microsoft Intune 部署脚本

将 PowerShell 双栈配置脚本打包为应用程序,定向推送至设备集合
 
✅ 优点:支持按 OU 筛选、部署监控、失败重试;同时配置 IPv4+IPv6
 
❌ 缺点:需要搭建企业运维平台,基础设施成本高

四、网络基础设施层面(不强制本机静态 IP,长期运维最优)

8. DHCPv4 静态保留 + DHCPv6 静态绑定

不在 Windows 系统本地写入静态 IP:
  • DHCP 服务器:IPv4 MAC 地址绑定固定地址
  • DHCPv6:DUID 绑定固定 IPv6 地址 / 前缀
     
    ✅ 优点:零客户端操作;重装系统、更换网卡依然获取固定地址;统一在服务器维护;同时管理双栈
     
    ❌ 缺点:业务如果强制要求操作系统本地固化静态 IP,则不能使用;需要搭建支持 DHCPv6 服务器
补充:部分工业场景、等保合规场景,要求电脑必须设置静态 IP,该方案不适用。

五、图形化第三方工具(免代码操作)

  1. LanHelper:扫描局域网主机,远程批量执行命令,加载 netsh 脚本配置双栈
  2. Advanced IP Scanner + 远程执行插件
  3. NetSetMan:擅长本机多配置文件切换,远程批量能力弱
     
    ✅ 优点:可视化操作,适合不熟悉脚本人员
     
    ❌ 缺点:免费版功能受限;大批量稳定性参差不齐;原生对 IPv6 支持普遍偏弱

六、系统部署阶段预置(新机批量装机)

9. MDT / WDS 任务序列

系统封装部署阶段,写入 PowerShell 双栈配置脚本;
 
适用新装机集群;不能改造存量已上线电脑

方案关键能力对比表(增加 IPv6 适配维度)

表格
 
 
 
方案 支持工作组 远程执行 一对一分配不同 IP 原生支持 IPv6 推荐规模
本地 BAT/netsh 少量现场操作
本地 PowerShell 机房现场部署
PsExec 远程 ≤200 台中小型局域网
WinRM(Invoke-Command) 常态化运维首选
GPP 组策略 ❌需 AD 域 ❌统一模板 全网统一网段场景
SCCM/Intune 数百台以上大型企业
DHCPv4/v6 绑定 长期运维首选(不强制本地静态 IP)

重要工程风险提示(双栈环境特有坑)

  1. 远程修改 IP 网段失联风险最高
     
    远程修改 IPv4 后,若新网段和运维主机不通,会话立刻断开;IPv6 同理,建议现场执行或分批小批量测试。
  2. 双栈修改顺序建议:优先 IPv4,再配置 IPv6,避免路由冲突。
  3. 网卡名称统一:区分「以太网」「以太网 2」,中英文名称不要混用。
  4. IPv6 网关注意:无状态自动配置 (SLAAC) 与静态路由不要同时启用,容易路由紊乱。
  5. 若需要每台电脑独立 IPv4 + 独立 IPv6 成对分配:唯一可行路线:CSV 清单 + PowerShell + WinRM/PsExec 远程脚本。

一、CSV 清单模板 PC_List.csv

编码保存为 UTF-8,放在运维主机脚本同目录
字段说明:
 
PrefixLength4:IPv4 前缀(24=255.255.255.0)
 
IPv6Address:完整 IPv6 地址
 
PrefixLength6:IPv6 前缀长度(常见 64)
 
Dns4:IPv4 DNS(多个逗号分隔)
 
Dns6:IPv6 DNS(多个逗号分隔)
csv
 
 
 
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
前置条件(目标机器全部完成)
  1. 启用 WinRM:Enable-PSRemoting -Force
  2. 防火墙放行 WinRM(5985)
  3. 工作组环境执行:
     
    Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*" -Force
  4. 使用本地管理员账号,目标网卡名称统一为 以太网
powershell
 
 
 
<#
批量远程配置 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 和脚本放在同一目录
powershell
 
 
 
$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
}
 

⚠️极高风险提醒

  1. 远程修改 IPv4 网段后,如果运维主机不在同一网段,会话直接断开,剩余设备无法继续执行!建议分批测试。
  2. 如果网卡名称不是「以太网」,统一修改脚本内 $NetInterface
  3. 建议先拿 1 台 PC 做测试,验证无误再批量运行。
  4. 若需要保留原有地址不清除,删除脚本中【清空原有静态 IP】region 代码块。
  5. IPv6 如不需要网关,把 CSV 网关字段留空,并删除对应 IPv6 网关代码。

 


在 Windows 局域网中批量更改 IP 地址,通常有几种方法可以实现。这些方法可以帮助你通过脚本或工具批量修改多台计算机的 IP 设置。下面是一些常见的方法和工具:

1. 使用 PowerShell 脚本

PowerShell 是一个强大的工具,可以用来批量管理计算机和网络设置。你可以编写 PowerShell 脚本来更改多台计算机的 IP 地址。

示例 PowerShell 脚本(假设你要修改某个网络接口的 IP 地址):

powershellCopy Code
$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 地址。

批处理脚本示例

Copy Code
@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 地址:

Copy Code
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 示例:

powershellCopy Code
$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 示例:

powershellCopy Code
$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 地址的批处理脚本:

Copy Code
@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 地址。

批处理脚本:

Copy Code
@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 来统一配置网络设置。

  1. 打开 Group Policy Management 控制台。
  2. 创建一个新的 GPO(组策略对象)。
  3. 在 GPO 中设置 Computer Configuration → Preferences → Control Panel Settings → Network Options 来配置静态 IP 地址或设置 DHCP。
  4. 将该 GPO 应用到需要批量修改 IP 地址的计算机组。

11. 使用 SCCM(System Center Configuration Manager)

如果你有 Microsoft SCCM 环境,SCCM 可以通过软件部署和配置管理来批量修改计算机的 IP 地址。你可以通过创建自定义脚本包来推送 IP 地址更改任务。

12. 批量修改 DNS 服务器设置

如果你需要批量修改 DNS 服务器地址,可以使用 netsh 命令或 PowerShell 来批量更改。下面是通过 PowerShell 批量修改 DNS 服务器地址的示例:

powershellCopy Code
$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,可以通过它们进一步简化管理。

 

posted @ 2025-03-14 20:09  suv789  阅读(1442)  评论(0)    收藏  举报