Skip to content

A Windows PowerShell script to quickly switch between multiple static IPv4 profiles, bound to specific network adapters. 一个用于 Windows 的 PowerShell 脚本,快速在多套 IPv4 配置之间切换,并与指定网卡绑定,支持自动 UAC 提升。

License

Notifications You must be signed in to change notification settings

is1900s/IPSwitchScript

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPSwitchScript

English | 中文

PowerShell Platform Admin License

一个用于 Windows 的 PowerShell 脚本,快速在多套 IPv4 配置之间切换,并与指定网卡绑定,支持自动 UAC 提升。

交互式菜单示例 (Interactive menu demo)
交互式菜单示例(可替换为实际截图或 GIF)

目录 (Table of Contents)

特性

  • 动作:add | switch | list | show | remove | rename | export | import | dhcp
  • 绑定策略:优先使用 InterfaceGuid,通过 InterfaceAlias 添加时自动解析并保存 GUID,避免网卡重命名导致失效
  • 安全切换:跳过移除 169.254.* 链路本地地址;网关通过路由规范化避免 DefaultGateway already exists 错误
  • 支持描述 Description 与标签 Tags(逗号分隔)
  • 配置持久化:同目录 profiles.json
  • 自动管理员提升(UAC)针对需要权限的动作:switch, dhcp
  • 仅使用 Windows 原生命令,不依赖第三方模块

快速上手

以管理员方式打开 PowerShell,进入脚本所在目录:

Set-ExecutionPolicy -Scope Process RemoteSigned
cd <脚本目录>

交互模式示例

./IPSwitch.ps1
# 菜单:新增 / 切换 / 查看列表 / 查看详情 / 删除 / 重命名 / 导出 / 导入 / DHCP / 网卡概要 / 退出

添加一个配置:

./IPSwitch.ps1 -Action add -Name Office -InterfaceAlias "Ethernet" -IPv4 192.168.1.50 -Mask 255.255.255.0 -Gateway 192.168.1.1 -Dns "8.8.8.8,1.1.1.1" -Description "公司内网" -Tags "office,prod"

切换到配置:

./IPSwitch.ps1 -Action switch -Name Office

切换指定网卡为 DHCP:

# 通过配置名称(绑定网卡)
./IPSwitch.ps1 -Action dhcp -Name Office
# 或直接指定别名
./IPSwitch.ps1 -Action dhcp -InterfaceAlias "Ethernet"

管理员与自动提升

执行会修改网络的动作(switch, dhcp)需要管理员权限。若当前会话不是管理员,脚本会尝试使用 UAC 弹窗自动提升并以相同参数重新运行:

./IPSwitch.ps1 -Action switch -Name Office  # 非管理员时会自动弹出 UAC 提示

如果自动提升失败,请手动以“以管理员身份运行”重新打开 PowerShell,再执行命令。

查看 / 删除 / 重命名

查看现有配置:

./IPSwitch.ps1 -Action list
./IPSwitch.ps1 -Action show -Name Office

删除或重命名:

./IPSwitch.ps1 -Action remove -Name Office
./IPSwitch.ps1 -Action rename -Name Office -NewName OfficeLAN

导入与导出

# 导出到 profiles-export.json
./IPSwitch.ps1 -Action export

# 从指定文件导入(使用 -PathOverride 指定源文件)
./IPSwitch.ps1 -Action import -PathOverride .\my-profiles.json

说明

  • 切换时移除目标网卡已存在的非链路本地 IPv4(跳过 169.254.*),再写入新地址、路由和 DNS。
  • Mask 使用点分十进制,内部转换为 PrefixLength。
  • DNS 支持多个地址,逗号分隔。
  • Description 可选;Tags 逗号分隔,列表显示聚合。
  • 通过 -InterfaceAlias 添加时自动解析并保存 InterfaceGuid,确保配置与物理网卡强绑定。

故障排查

  • 需要管理员权限:右键 PowerShell 以管理员身份运行。
  • 提示找不到网卡:确认网卡存在且未被禁用,或硬件未更换导致 GUID 变化。
  • 执行策略受限:使用上方 Set-ExecutionPolicy -Scope Process RemoteSigned 在当前会话放宽。

Verbose 日志

可加 -Verbose 查看内部处理信息,例如:

./IPSwitch.ps1 -Action import -PathOverride .\profiles.json -Verbose

License

MIT © 2025. 详见 LICENSE 文件,可自由使用、修改与分发。


欢迎提交 Issue 请求:IPv6 支持、标签过滤、双语动态切换(-Lang)或其他改进建议。

About

A Windows PowerShell script to quickly switch between multiple static IPv4 profiles, bound to specific network adapters. 一个用于 Windows 的 PowerShell 脚本,快速在多套 IPv4 配置之间切换,并与指定网卡绑定,支持自动 UAC 提升。

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published