windows server中可用powershell动态修改网卡mtu:先用get-netadapter筛选启用的网卡获取name,再用netsh interface ipv4 set subinterface "name" mtu=x store=persistent永久设置,或server 2016+用set-netipinterface -interfacealias "name" -mtusize x。
在 windows server 中,powershell 可以直接读取网卡名称并动态修改其 mtu 值,无需手动查接口编号或依赖图形界面。关键在于先准确识别启用中的物理/虚拟网卡,再调用 netsh 或原生 powershell cmdlet 完成设置。
确认目标网卡名称
运行以下命令获取当前已启用的网络适配器真实名称(即 InterfaceAlias):
Get-NetAdapter -Physical | Where-Object Status -eq 'Up' | Select-Object Name, InterfaceDescription, LinkSpeed
若需包含虚拟网卡(如 Hyper-V、VMware 适配器),去掉 -Physical 参数即可。注意:netsh 修改时必须使用 Name 字段值(例如 Ethernet、vEthernet (Default Switch)),不是描述或 ifIndex。
用 netsh 设置 MTU(推荐,兼容性好)
PowerShell 调用 netsh 是最稳定的方式,适用于所有 Windows Server 版本(2012 R2 起):
- 查看当前 MTU:netsh interface ipv4 show subinterfaces
- 将名为
Ethernet的接口 MTU 设为 1400:netsh interface ipv4 set subinterface "Ethernet" mtu=1400 store=persistent - 设置后需重启该接口或重启服务器才能生效(部分情况下断开/重连网络连接即可)
⚠️ 注意:store=persistent 表示永久写入注册表,重启不失效;若省略此项,重启后恢复默认值。
用 PowerShell 原生命令(Server 2016+ 推荐)
Windows Server 2016 及更新版本支持通过 Set-NetIPInterface 直接修改,但需注意:该命令实际修改的是 IPv4 接口层的 MTU,底层仍依赖 netsh 子接口配置,效果一致:
Set-NetIPInterface -InterfaceAlias "Ethernet" -MtuSize 1400
执行后可通过以下命令验证是否生效:
Get-NetIPInterface -AddressFamily IPv4 | Where-Object InterfaceAlias -eq "Ethernet" | Select-Object InterfaceAlias, MtuSize, ConnectionState
批量或脚本化修改(运维场景)
若需对多台服务器统一调整,可封装为脚本:
- 先按条件筛选网卡,例如只改千兆有线口:$nic = Get-NetAdapter -Physical | Where-Object {$_.LinkSpeed -ge 1Gbps -and $_.Status -eq 'Up'} | Select-Object -First 1
- 再设 MTU:netsh interface ipv4 set subinterface "$($nic.Name)" mtu=1400 store=persistent
- 建议添加错误检查,例如判断
$nic是否为空,避免误操作
不复杂但容易忽略











