一、netsh命令的简介

netsh(Network Shell)是一个windows系统本身提供的功能强大的网络配置命令行工具,可用来修改windows的ip、网关、dns等信息。

netsh是一个上下文命令,它有很多子命令,这些子命令各自又有各自的子命令,这样反复嵌套下来一共可以有4层命令或参数,例如【netsh interface ipv4 dump】。

如果进入了上下文环境,执行命令【exit】、【exit /b】可直接退出所有层级的上下文环境。

二、打印netsh命令帮助信息

1.1 打印最外层netsh命令的帮助信息

执行命令【netsh /?】,显示帮助信息

C:\WINDOWS\system32>netsh /?用法: netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName\]UserName] [-p Password | *][Command | -f ScriptFile]下列指令有效:此上下文中的命令:
?              - 显示命令列表。
add            - 在项目列表上添加一个配置项目。
advfirewall    - 更改到 `netsh advfirewall' 上下文。
branchcache    - 更改到 `netsh branchcache' 上下文。
bridge         - 更改到 `netsh bridge' 上下文。
delete         - 在项目列表上删除一个配置项目。
dhcpclient     - 更改到 `netsh dhcpclient' 上下文。
dnsclient      - 更改到 `netsh dnsclient' 上下文。
dump           - 显示一个配置脚本。
exec           - 运行一个脚本文件。
firewall       - 更改到 `netsh firewall' 上下文。
help           - 显示命令列表。
http           - 更改到 `netsh http' 上下文。
interface      - 更改到 `netsh interface' 上下文。
ipsec          - 更改到 `netsh ipsec' 上下文。
lan            - 更改到 `netsh lan' 上下文。
mbn            - 更改到 `netsh mbn' 上下文。
namespace      - 更改到 `netsh namespace' 上下文。
netio          - 更改到 `netsh netio' 上下文。
p2p            - 更改到 `netsh p2p' 上下文。
ras            - 更改到 `netsh ras' 上下文。
rpc            - 更改到 `netsh rpc' 上下文。
set            - 更新配置设置。
show           - 显示信息。
trace          - 更改到 `netsh trace' 上下文。
wcn            - 更改到 `netsh wcn' 上下文。
wfp            - 更改到 `netsh wfp' 上下文。
winhttp        - 更改到 `netsh winhttp' 上下文。
winsock        - 更改到 `netsh winsock' 上下文。
wlan           - 更改到 `netsh wlan' 上下文。下列的子上下文可用:advfirewall branchcache bridge dhcpclient dnsclient firewall http interface ipsec lan mbn namespace netio p2p ras rpc trace wcn wfp winhttp winsock wlan若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

2.2 netsh上下文机制与子命令上下文的进入方法

由于netsh命令是一个上下文命令,因此当直接执行netsh时,会进入netsh环境;而进一步使用诸如dump、delete这些命令时,效果和不先进入上下文环境而直接执行【netsh dump】、【netsh delete】的完全一样。

然而!!!

对于命令后带有「更改到 ' xxx ' 上下文」注释信息的命令本身(不带子命令或参数),就必须在netsh上下文环境中执行。

比如说interface命令后就有这种注释信息,因此如果要进入netsh interface上下文,必须先执行【netsh】进入netsh上下文。

再执行【interface】命令(或简写的int)进一步进入netsh interface上下文。

而再进一步执行【ip】或【ipv4】,就可进入netsh interface ipv4上下文;或者执行【ipv6】,进入netsh interface ipv6上下文。

2.3 打印netsh命令的各个层的子命令帮助信息

(1)不在上下文中打印的帮助信息

打印帮助信息不管是不是处于上下文环境都可以;下面以netsh——>interface——>ipv4——>dump这个4层深度的命令链为例,讲述该链经过了netsh命令树的哪些“枝干”。

如果不是处于上下文环境,直接执行【netsh interface】,就会显示netsh interface上下文的子命令或参数。

C:\WINDOWS\system32>netsh interface下列指令有效:此上下文中的命令:
6to4           - 更改到 `netsh interface 6to4' 上下文。
?              - 显示命令列表。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
httpstunnel    - 更改到 `netsh interface httpstunnel' 上下文。
ipv4           - 更改到 `netsh interface ipv4' 上下文。
ipv6           - 更改到 `netsh interface ipv6' 上下文。
isatap         - 更改到 `netsh interface isatap' 上下文。
portproxy      - 更改到 `netsh interface portproxy' 上下文。
set            - 设置配置信息。
show           - 显示信息。
tcp            - 更改到 `netsh interface tcp' 上下文。
teredo         - 更改到 `netsh interface teredo' 上下文。
udp            - 更改到 `netsh interface udp' 上下文。下列的子上下文可用:6to4 httpstunnel ipv4 ipv6 isatap portproxy tcp teredo udp若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

同理,直接执行【netsh interface ipv4】会显示netsh interface ipv4上下文的子命令或参数。

C:\WINDOWS\system32>netsh interface ipv4下列指令有效:此上下文中的命令:
?              - 显示命令列表。
add            - 在一个表格中添加一个配置项。
delete         - 从一个表格中删除一个配置项。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
install        - 安装 IP 协议。
reset          - 重置 IP 配置。
set            - 设置配置信息。
show           - 显示信息。
uninstall      - 卸载 IP 协议。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

(2)在上下文中打印帮助信息,会包括继承部分

另外一点,我们也可以发现,当我们进入netsh的子命令的上下文后,再执行【?】,就会把自父命令(netsh)继承下来的命令也给打印出来。

netsh interface>?下列指令有效:命令从 netsh 上下文继承:
..             - 移到上一层上下文级。
abort          - 丢弃在脱机模式下所做的更改。
add            - 在项目列表上添加一个配置项目。
advfirewall    - 更改到 `netsh advfirewall' 上下文。
alias          - 添加一个别名
branchcache    - 更改到 `netsh branchcache' 上下文。
bridge         - 更改到 `netsh bridge' 上下文。
bye            - 退出程序。
commit         - 提交在脱机模式中所做的更改。
delete         - 在项目列表上删除一个配置项目。
dhcpclient     - 更改到 `netsh dhcpclient' 上下文。
dnsclient      - 更改到 `netsh dnsclient' 上下文。
exit           - 退出程序。
firewall       - 更改到 `netsh firewall' 上下文。
http           - 更改到 `netsh http' 上下文。
interface      - 更改到 `netsh interface' 上下文。
ipsec          - 更改到 `netsh ipsec' 上下文。
lan            - 更改到 `netsh lan' 上下文。
mbn            - 更改到 `netsh mbn' 上下文。
namespace      - 更改到 `netsh namespace' 上下文。
netio          - 更改到 `netsh netio' 上下文。
offline        - 将当前模式设置成脱机。
online         - 将当前模式设置成联机。
p2p            - 更改到 `netsh p2p' 上下文。
popd           - 从堆栈上打开一个上下文。
pushd          - 将当前上下文放入堆栈。
quit           - 退出程序。
ras            - 更改到 `netsh ras' 上下文。
rpc            - 更改到 `netsh rpc' 上下文。
set            - 更新配置设置。
show           - 显示信息。
trace          - 更改到 `netsh trace' 上下文。
unalias        - 删除一个别名。
wcn            - 更改到 `netsh wcn' 上下文。
wfp            - 更改到 `netsh wfp' 上下文。
winhttp        - 更改到 `netsh winhttp' 上下文。
winsock        - 更改到 `netsh winsock' 上下文。
wlan           - 更改到 `netsh wlan' 上下文。此上下文中的命令:
6to4           - 更改到 `netsh interface 6to4' 上下文。
?              - 显示命令列表。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
httpstunnel    - 更改到 `netsh interface httpstunnel' 上下文。
ipv4           - 更改到 `netsh interface ipv4' 上下文。
ipv6           - 更改到 `netsh interface ipv6' 上下文。
isatap         - 更改到 `netsh interface isatap' 上下文。
portproxy      - 更改到 `netsh interface portproxy' 上下文。
set            - 设置配置信息。
show           - 显示信息。
tcp            - 更改到 `netsh interface tcp' 上下文。
teredo         - 更改到 `netsh interface teredo' 上下文。
udp            - 更改到 `netsh interface udp' 上下文。下列的子上下文可用:6to4 httpstunnel ipv4 ipv6 isatap portproxy tcp teredo udp若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

而我们在执行【ip】进入netsh interface ipv4上下文后,用命令【?】得到的帮助信息中,不仅对最顶层的netsh命令进行了继承,也对二层的netsh interface命令进行了继承。

netsh interface ipv4>?下列指令有效:命令从 netsh 上下文继承:
..             - 移到上一层上下文级。
abort          - 丢弃在脱机模式下所做的更改。
add            - 在项目列表上添加一个配置项目。
advfirewall    - 更改到 `netsh advfirewall' 上下文。
alias          - 添加一个别名
branchcache    - 更改到 `netsh branchcache' 上下文。
bridge         - 更改到 `netsh bridge' 上下文。
bye            - 退出程序。
commit         - 提交在脱机模式中所做的更改。
delete         - 在项目列表上删除一个配置项目。
dhcpclient     - 更改到 `netsh dhcpclient' 上下文。
dnsclient      - 更改到 `netsh dnsclient' 上下文。
exit           - 退出程序。
firewall       - 更改到 `netsh firewall' 上下文。
http           - 更改到 `netsh http' 上下文。
interface      - 更改到 `netsh interface' 上下文。
ipsec          - 更改到 `netsh ipsec' 上下文。
lan            - 更改到 `netsh lan' 上下文。
mbn            - 更改到 `netsh mbn' 上下文。
namespace      - 更改到 `netsh namespace' 上下文。
netio          - 更改到 `netsh netio' 上下文。
offline        - 将当前模式设置成脱机。
online         - 将当前模式设置成联机。
p2p            - 更改到 `netsh p2p' 上下文。
popd           - 从堆栈上打开一个上下文。
pushd          - 将当前上下文放入堆栈。
quit           - 退出程序。
ras            - 更改到 `netsh ras' 上下文。
rpc            - 更改到 `netsh rpc' 上下文。
set            - 更新配置设置。
show           - 显示信息。
trace          - 更改到 `netsh trace' 上下文。
unalias        - 删除一个别名。
wcn            - 更改到 `netsh wcn' 上下文。
wfp            - 更改到 `netsh wfp' 上下文。
winhttp        - 更改到 `netsh winhttp' 上下文。
winsock        - 更改到 `netsh winsock' 上下文。
wlan           - 更改到 `netsh wlan' 上下文。命令从 netsh interface 上下文继承:
6to4           - 更改到 `netsh interface 6to4' 上下文。
httpstunnel    - 更改到 `netsh interface httpstunnel' 上下文。
ipv4           - 更改到 `netsh interface ipv4' 上下文。
ipv6           - 更改到 `netsh interface ipv6' 上下文。
isatap         - 更改到 `netsh interface isatap' 上下文。
portproxy      - 更改到 `netsh interface portproxy' 上下文。
set            - 设置配置信息。
show           - 显示信息。
tcp            - 更改到 `netsh interface tcp' 上下文。
teredo         - 更改到 `netsh interface teredo' 上下文。
udp            - 更改到 `netsh interface udp' 上下文。此上下文中的命令:
?              - 显示命令列表。
add            - 在一个表格中添加一个配置项。
delete         - 从一个表格中删除一个配置项。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
install        - 安装 IP 协议。
reset          - 重置 IP 配置。
set            - 设置配置信息。
show           - 显示信息。
uninstall      - 卸载 IP 协议。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

2.4 执行netsh系列命令的方法

(1)不进入上下文环境,直接执行

对于并非上下文环境的命令,比如【netsh interface】就是上下文命令,而【netsh dump】不是上下文命令,可以不用在上下文环境中执行。

再比如【netsh interface ipv4】是上下文命令,而【netsh interface ipv4 dump】不是,就可以直接执行。

(2)进入上下文环境,再执行

还是以上面的【netsh dump】为例,要实现相同的效果,除了直接执行外,还可以先通过【netsh】进入netsh上下文再执行【dump】。

三、显示所有配置信息——dump

3.1 打印帮助信息

执行命令【netsh dump /?】,即可显示帮助信息。

C:\WINDOWS\system32>netsh dump /?用法: dump说明:创建一个包含当前配置的脚本文件。如果保存到文件,此脚本可以用来还原更改的配置设置。

3.2 显示所有配置信息(netsh dump)

既然可以显示所有配置信息,那么将配置信息重定向至文本文件,也就实现了将所有网络配置信息导出至本地。

执行命令【netsh dump】,显示所有配置信息

3.3 将网络配置信息导出至本地文件(netsh dump>filepath)

执行命令【netsh dump>D:\D-desktop\net_config.txt】,即可将上面这么多行的配置信息全导入至txt文件中。

四、进入或更改netsh interface——netsh int

4.1 打印帮助信息(netsh int /?)

C:\WINDOWS\system32>netsh int /?下列指令有效:此上下文中的命令:
6to4           - 更改到 `netsh interface 6to4' 上下文。
?              - 显示命令列表。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
httpstunnel    - 更改到 `netsh interface httpstunnel' 上下文。
ipv4           - 更改到 `netsh interface ipv4' 上下文。
ipv6           - 更改到 `netsh interface ipv6' 上下文。
isatap         - 更改到 `netsh interface isatap' 上下文。
portproxy      - 更改到 `netsh interface portproxy' 上下文。
set            - 设置配置信息。
show           - 显示信息。
tcp            - 更改到 `netsh interface tcp' 上下文。
teredo         - 更改到 `netsh interface teredo' 上下文。
udp            - 更改到 `netsh interface udp' 上下文。下列的子上下文可用:6to4 httpstunnel ipv4 ipv6 isatap portproxy tcp teredo udp若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

4.2 进入到ipv4接口环境(int ip)

因为nterface命令是需要在上下文环境中执行的;必须先执行【netsh】进入上下文。

而后再执行【interface】,即可进入netsh interface的上下文,而再进一步执行【ip】或【ipv4】才可进入netsh interface ipv4上下文。

当然也可在进入netsh上下文后,直接用【int ip】、【int ipv4】、【interface ip】、【interface ipv4】这4个命令之一进入netsh interface ipv4上下文。

进入到ipv4上下文,有什么意义?

这时候,执行命令【dump】,只会显示与ipv4相关的配置信息(截取全部的一部分)。

netsh interface ipv4>dump#========================
# IPv4 配置
#========================
pushd interface ipv4reset
set global taskoffload=enabled
set interface interface="以太网(内核调试器)" forwarding=enabled advertise=enabled nud=enabled ignoredefaultroutes=disabled
set interface interface="本地连接* 1" forwarding=enabled advertise=enabled nud=enabled ignoredefaultroutes=disabled
set interface interface="本地连接* 2" forwarding=enabled advertise=enabled nud=enabled ignoredefaultroutes=disabled
set interface interface="本地连接* 11" forwarding=enabled advertise=enabled nud=enabled ignoredefaultroutes=disabled
set interface interface="本地连接* 14" forwarding=enabled advertise=enabled nud=enabled ignoredefaultroutes=disabledpopd
# IPv4 配置结束

4.3 进入IPv6接口环境(int ipv6)

由于现在大部分的网络都已经升级成了IPv6,所以很可能你不会在ipv4接口环境中找到你想要的网络配置信息。

比如我的这台机器上网实际上用的是wlan 2,但是在ipv4接口环境下却输出不出来。

当我进入ipv6环境后,再输出所有配置信息,里面就包括了wlan 2。

而非常诡异的是,虽然是ipv6,但是也可以在ipv4的接口环境中设置IP地址(详见下面的5.3)。

五、设置IP地址及其获取方式

5.1 打印帮助信息(set addr /?)

在进入了netsh上下文后,如果在ipv4接口环境中,执行命令【set addr /?】,显示帮助

netsh interface ipv4>set addr /?用法: set address [name=]<字符串>[[source=]dhcp|static][[address=]<IPv4 地址>[/<整数>] [[mask=]<IPv4 掩码>][[gateway=]<IPv4 地址>|none [gwmetric=]<整数>][[type=]unicast|anycast][[subinterface=]<字符串>][[store=]active|persistent]参数:标记            值name         - 接口名称或索引。source       - 下列值之一:dhcp: 启用 DHCP,以便为指定的接口配置 IP 地址。static: 禁用 DHCP,以便为指定的接口配置 IP 地址。如果配置了地址或网关,则必须指定该值。address      - 要添加或修改的 IPv4 地址,后边也可以加上子网前缀长度。mask         - 指定的 IP 地址的 IP 子网掩码。gateway      - 下列值之一:<IPv4 address>: 正在设置的静态 IP 地址的特定默认网关。none: 未设置任何默认网关。此为默认值。gwmetric     - 默认网关的跃点数。仅在指定了网关时才应设置该字段。type         - 下列值之一:unicast: 将地址标记为单播地址。此为默认值。anycast: 将地址标记为任意广播地址。subinterface - 默认网关存在于其上的子接口的 LUID。此参数仅用于带有多个子接口的接口。store        - 下列值之一:active: 设置仅持续到下一次启动。persistent: 设置永久有效。此为默认值。备注: 用来启用或禁用 IP 地址配置的 DHCP。同时删除所有以前的静态 IP 地址和默认网关,并可以添加新的静态 IP 地址和默认网关。示例:set address name="Wired Ethernet Connection" source=dhcpset address "Wired Ethernet Connection" static 10.0.0.9 255.0.0.0 10.0.0.1 1

在进入了netsh上下文后,如果在ipv6接口环境中,执行命令【set addr /?】,显示帮助

netsh interface ipv6>set addr /?用法: set address [interface=]<string> [address=]<IPv6 address>[[type=]unicast|anycast][[validlifetime=]<integer>|infinite][[preferredlifetime=]<integer>|infinite][[store=]active|persistent]参数:标记                值interface         - 接口名称或索引。address           - 要修改的 IPv6 地址。type              - 下列其中一个值:unicast: 将地址标记为 unicast 地址。此为默认值。anycast: 将地址标记为 anycast 地址。validlifetime     - 有效地址的生存时间。默认值是无限。preferredlifetime - 首选地址生存时间。默认值是无限。store             - 下列其中一个值:active: 设置仅持续到下一次启动。persistent: 设置永久有效(默认值)。说明: 修改给定接口上的 IPv6 地址。时间值可以为天、小时、分钟和秒,例如 1d2h3m4s。示例:set address "Private" fe80::2 anycast

5.2 设置IP地址的基本语法

从5.1打印出来的帮助信息也可知道,如果是设置ipv4的地址。

在进入netsh interface ipv4上下文后,执行下面的命令可以设置静态地址。

set address name=xx source=static addr=xx mask=xx

在进入netsh interface ipv4上下文后,执行下面的命令可以设置动态地址。

set address name=xx source=dhcp

而如果是设置ipv6的地址,本文暂时不涉及,抱歉了!

5.3 设置静态IP地址

首先,我们可以看到WLAN 2的IP地址是自动获取的。

为了将其调整成静态获取地址,并且手动为其制定IP地址和子网掩码,我们可以执行命令【set address name="WLAN 2" source=static addr=192.168.2.133 mask=255.255.255.0】

效果如下,修改后能不能正常上网我不知道,反正我是知道修改成功了。

5.4 设置动态IP地址

由于网络和共享中心里,修改成静态地址后,显示无法连接到网络,所以我想改回动态地址。

在ipv4接口环境下,执行命令【set address name="WLAN 2" source=dhcp】

碎碎念的自动获取地址,又回来啦!

六、使用netsh修复网络故障——winsock

6.1 重置Winsock目录

查看一下winsock命令的帮助信息,执行命令【netsh winsock /?】,可得

C:\Users\Administrator>netsh winsock /?下列指令有效:此上下文中的命令:
?              - 显示命令列表。
audit          - 显示已经安装和删除的 Winsock LSP 列表。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
remove         - 从系统中删除 Winsock LSP。
reset          - 重置 Winsock 目录为清除状态。
set            - 设置 Winsock 选项。
show           - 显示信息。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

如果计算机Winsock协议配置有问题的话将会导致网络连接等问题,通过重置Winsock目录、初始化网络环境借以恢复网络,可解决由于“软件冲突”、“病毒原因”造成的参数错误问题,可以用命令【netsh winsock reset】。

6.2 重置TCP/IP协议

如果我们要重置TCP/IP协议,卸载并重新安装TCP/IP协议,使其恢复到初次安装操作系统时的状态,并且将重置过程日志信息输出到本地,可以用命令【netsh int ip reset>c:\ip_reset_log.txt】。

七、借netsh命令管理防火墙(旧firewall)

7.1 管理防火墙的GUI界面

我们先不着急讲如何通过命令行管理防火墙,因为大多数人恐怕更喜欢用图形界面窗口去进行配置!

在运行窗口或CMD窗口中执行【firewall.cpl】,即可打开「Windows Defender 防火墙」窗口。

而后在高级设置里,窗口名为「高级安全Vindows Defender防火墙」,我们可以添加各种规则来细化地设置防火墙。 

7.2 打印netsh firewall的帮助信息

执行【netsh firewall /?】,即可大致获得旧防火墙命令的子命令。

C:\WINDOWS\system32>netsh firewall /?下列指令有效:此上下文中的命令:
?              - 显示命令列表。
add            - 添加防火墙配置。
delete         - 删除防火墙配置。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
set            - 设置防火墙配置。
show           - 显示防火墙配置。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

而后我们再看看子命令怎么用?

以set子命令为例!我们执行【netsh firewall set /?】,发现没有帮助信息,从这个方面我们也可看出微软公司已经停止了对该命令的维护。

但是,惊奇的是,我们执行【netsh firewall set portopening /?】 却能打印出set命令的子命令portopenning的帮助信息。

C:\WINDOWS\system32>netsh firewall set portopening /?set portopening[ protocol = ] TCP|UDP|ALL[ port = ] 1-65535[ [ name = ] name[ mode = ] ENABLE|DISABLE[ scope = ] ALL|SUBNET|CUSTOM[ addresses = ] addresses[ profile = ] CURRENT|DOMAIN|STANDARD|ALL设置防火墙端口配置。参数:protocol - 端口协议。TCP - 传输控制协议(TCP)。UDP - 用户数据报协议(UDP)。ALL - 所有协议。port - 端口号。name - 端口名(可选)。mode - 端口模式(可选)。ENABLE  - 允许通过防火墙(默认值)。DISABLE - 不允许通过防火墙。scope - 端口范围(可选)。ALL    - 允许所有流量通过防火墙(默认值)。SUBNET - 只允许本地网络(子网)流量通过防火墙。CUSTOM - 只允许指定的流量通过防火墙。addresses - 自定义范围地址(可选)。这个范围可以包含 IPv4 地址、IPv6 地址、子网、范围或关键字 LocalSubnet,用逗号分隔。profile - 配置文件(可选)。CURRENT  - 适用于活动配置文件。活动配置文件可以是域、标准(即专用),或公用(默认)。DOMAIN   - 适用于域配置文件。STANDARD - 适用于标准(即专用)配置文件。ALL      - 适用于域和标准(即专用)配置文件。不适用于公用配置文件。注释: "scope" 必须是 "CUSTOM" 才能指定 "addresses"。"addresses" 不能包含未指定的或环回地址。示例:set portopening TCP 80 "My Web Port"set portopening UDP 500 IKE ENABLE ALLset portopening ALL 53 DNS ENABLE CUSTOM157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,12AB:0000:0000:CD30::/60,LocalSubnetset portopening protocol=ALL port=53 name=DNS mode=ENABLE scope=CUSTOMaddresses=157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,12AB:0000:0000:CD30::/60,LocalSubnet重要信息: "netsh firewall" 已弃用;请改用 "netsh advfirewall firewall"。有关使用 "netsh advfirewall firewall" 命令而非 "netsh firewall" 的详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=121488 上的 KB 文章 947709。

我们从帮助信息的最后几行可以看到「重要信息」,也即netsh firewall已经被弃用;但是其中有些命令在win10的系统中还是能用的。

因此我们还是稍微讲讲,(让大家念念旧),哈哈哈。

7.3 添加、删除防火墙过滤规则端口(set portopenning)

执行命令【netsh firewall set portopening TCP 445 ENABLE】,结果如下

而后,我们可以在本文的7.1小节中提到的「高级安全Vindows Defender防火墙」窗口中,找到上面设置的这个端口规则。

最后,我们把这个端口过滤规则关掉,毕竟俺就是想测试一下打不打得开总归要关得万一遇到坏人呢。

执行命令【netsh firewall set portopening TCP 445 DISABLE】,果然就找不到那个netlogon服务了。

7.4 打开或关闭防火墙——set opmode

执行命令【netsh firewall set opmode /?】,获得相关帮助信息

C:\WINDOWS\system32>netsh firewall set opmode /?set opmode[ mode = ] ENABLE|DISABLE[ [ exceptions = ] ENABLE|DISABLE[ profile = ] CURRENT|DOMAIN|STANDARD|ALL设置防火墙操作配置。参数:mode - 操作模式。ENABLE  - 启用防火墙。DISABLE - 禁用防火墙。exceptions - 例外模式(可选)。ENABLE  - 允许通过防火墙(默认值)。DISABLE - 不允许通过防火墙。profile - 配置文件(可选)。CURRENT  - 适用于活动配置文件。活动配置文件可以是域、标准(即专用),或公用(默认)。DOMAIN   - 适用于域配置文件。STANDARD - 适用于标准(即专用)配置文件。ALL      - 适用于域和标准(即专用)配置文件。不适用于公用配置文件。示例:set opmode ENABLEset opmode mode=ENABLE exceptions=DISABLE重要信息:"netsh firewall" 已弃用;请改用 "netsh advfirewall firewall"。有关使用 "netsh advfirewall firewall" 命令而非 "netsh firewall" 的详细信息,请参阅https://go.microsoft.com/fwlink/?linkid=121488 上的 KB 文章 947709。

在执行下面的命令前,我们看一下当前防火墙的状态

再执行【netsh firewall set opmode mode=enable】,即打开和启用防火墙

最后执行命令【netsh firewall set opmode mode=disable】,即关闭防火墙

执行完后,弹出下面的警示框,也侧面说明成功关闭。

八、借netsh命令管理防火墙(新firewall)

8.1 打印新防火墙命令帮助信息

执行命令【netsh advfirewall firewall】,得到最外层命令的子命令列表

C:\WINDOWS\system32>netsh advfirewall firewall下列指令有效:此上下文中的命令:
?              - 显示命令列表。
add            - 添加新入站或出站防火墙规则。
delete         - 删除所有匹配的防火墙规则。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
set            - 为现有规则的属性设置新值。
show           - 显示指定的防火墙规则。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

接着以子命令set为例,执行【netsh advfirewall firewall set ?】,得到如下帮助信息

C:\WINDOWS\system32>netsh advfirewall firewall set ?下列指令有效:此上下文中的命令:
set rule       - 为现有规则的属性设置新值。

而后,再执行【netsh advfirewall firewall set rule ?】,得到如下帮助信息 。其中的group字段和name字段表示对规则进行命名,;而dir字段表示规则是入站规则还是出站规则;profile字段表示配置文件,应用于公有网络还是专有网络,还是特定IP。

C:\WINDOWS\system32>netsh advfirewall firewall set rule ?用法: set rulegroup=<string> | name=<string>[dir=in|out][profile=public|private|domain|any[,...]][program=<program path>][service=service short name|any][localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][localport=0-65535|<port range>[,...]|RPC|RPC-EPMap|IPHTTPS|any][remoteport=0-65535|<port range>[,...]|any][protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|tcp|udp|any]new[name=<string>][dir=in|out][program=<program path>[service=<service short name>|any][action=allow|block|bypass][description=<string>][enable=yes|no][profile=public|private|domain|any[,...]][localip=any|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|<IPv4 address>|<IPv6 address>|<subnet>|<range>|<list>][localport=0-65535|RPC|RPC-EPMap|any[,...]][remoteport=0-65535|any[,...]][protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|tcp|udp|any][interfacetype=wireless|lan|ras|any][rmtcomputergrp=<SDDL string>][rmtusrgrp=<SDDL string>][edge=yes|deferapp|deferuser|no (default=no)][security=authenticate|authenc|authdynenc|notrequired]备注:- 为已识别的规则设置新的参数值。如果规则不存在,则该命令失败。若要创建规则,请使用添加命令。- 会更新规则中 new 关键字后的值。如果没有值,或缺少关键字 new,则没有任何更改。- 一组规则只能被启用或禁用。- 如果多个规则与条件匹配,则会更新所有匹配规则。- 规则名称应该是唯一的,并且不能是 "all"。- 如果指定远程计算机或用户组,security 必须为 authenticate、authenc 或 authdynenc。- 为 authdynenc 设置安全性可允许系统动态协商为匹配给定 Windows Defender 防火墙规则的通信使用加密。根据现有连接安全规则属性协商加密。选择此选项后,只要入站 IPsec 连接已设置安全保护,但未使用 IPsec 进行加密,计算机就能够接收该入站连接的第一个 TCP或 UDP 包。一旦处理了第一个数据包,服务器将重新协商连接并对其进行升级,以便所有后续通信都完全加密。- Authdynenc 仅当 dir=in 时有效。- 如果 action=bypass,则当 dir=in 时必须指定远程计算机组。- 如果 service=any,则规则只适用于服务。- ICMP 类型或代码可以是 "any"。- 只能为入站规则指定边缘。示例:根据名称为 "allow80" 的规则更改远程 IP 地址:netsh advfirewall firewall set rule name="allow80" newremoteip=192.168.0.2启用带有分组字符串 "Remote Desktop" 的组:netsh advfirewall firewall set rule group="remote desktop" newenable=yes为 udp- 更改规则 "Allow port range" 上的本地端口Set rule name="Allow port range" dir=out protocol=udp localport=5000-5020 action=allow

8.2 利用netsh防火墙命令构建一条防火墙规则

如果我们要开启端口3389,协议限定为TCP,规则为入站规则。

执行命令【netsh advfirewall firewall add rule name=sansanbajiu dir=in
action=allow protocol=TCP localport=3389】

成功后,我们在「高级安全Vindows Defender防火墙」中也可以看出来这个名为sansanbajiu的入站规则被开启了。

8.2 利用netsh防火墙命令删除一条规则

删除规则就没有构建规则那么复杂,因为同名规则只有一个,因此删除规则直接指定名称即可。

执行命令【netsh advfirewall firewall delete rule name=sansanbajiu】

如果您想更精确一些,删除的时候无需指定action字段,其他的端口字段、协议字段都可以添加,以进一步精确地指定欲删除的规则。

执行命令【netsh advfirewall firewall delete rule name=sansanbajiu protocol=TCP localport=3389】

九、借netsh命令破解WIFI密码

9.1 查看netsh wlan命令的帮助信息

C:\WINDOWS\system32>netsh wlan /?下列指令有效:此上下文中的命令:
?              - 显示命令列表。
add            - 在一个表格中添加一个配置项。
connect        - 连接到无线网络。
delete         - 从一个表格中删除一个配置项。
disconnect     - 从无线网络断开连接。
dump           - 显示一个配置脚本。
export         - 将 WLAN 配置文件保存为 XML 文件。
help           - 显示命令列表。
IHV            - 用于 IHV 记录的命令。
refresh        - 刷新承载网络设置。
reportissues   - 生成 WLAN 智能跟踪报告。
set            - 设置配置信息。
show           - 显示信息。
start          - 启动承载网络。
stop           - 停止承载网络。若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

以show子命令为例,查询show子命令怎么用。执行命令【netsh wlan show /?】

C:\WINDOWS\system32>netsh wlan show /?下列指令有效:此上下文中的命令:
show all       - 显示完整的无线设备和网络信息。
show allowexplicitcreds - 显示允许共享用户凭据设置。
show autoconfig - 显示是否启用或禁用自动配置逻辑。
show blockednetworks - 显示阻止的网络显示设置。
show createalluserprofile - 显示是否允许所有人创建所有用户配置文件。
show drivers   - 显示系统上无线 LAN 驱动程序的属性。
show filters   - 显示允许和阻止的网络列表。
show hostednetwork - 显示承载网络的属性和状态。
show interfaces - 显示系统上的无线局域网接口的列表。
show networks  - 显示计算机上可见的网络列表。
show onlyUseGPProfilesforAllowedNetworks - 显示在配置 GP 的网络设置上仅使用 GP 配置文件。
show profiles  - 显示计算机上配置的配置文件列表。
show randomization - 显示 MAC 随机化是已启用还是已禁用。
show settings  - 显示无线 LAN 的全局设置。
show tracing   - 显示是否启用或禁用无线局域网跟踪。
show wirelesscapabilities - 显示系统的无线功能
show wlanreport - 生成一个报告,显示最新的无线会话信息。

再以Profiles为例,进一步想知道show profiles的用法,执行命令【netsh wlan show profiles /?】

C:\WINDOWS\system32>netsh wlan show profiles /?用法: show profiles [[name=]<string>] [interface=<string>] [key=<string>]参数:标记            值name          - 所要显示配置文件的名称。interface     - 已配置此配置文件的接口的名称。key           - 以纯文件显示密钥,设置密钥=clear。注释:显示配置文件数据或列出系统上的配置文件。参数 name 和 interface 都是可选的。如果已给定配置文件名称,则将会显示配置文件的内容。否则,将仅列出配置文件名称和描述。如果已给定接口名称,则将仅列出给定接口上的指定配置文件。否则,将列出系统中给定名称的所有配置文件。如果将密钥设置为 "clear",且呼叫方为本地管理员,则该密钥将以纯文本显示。组策略配置文件为只读,而用户配置文件是可读写的,而且,首选顺序也可以更改。示例:show profiles name="profile 1" interface="Wireless Network Connection"show profiles name="profile 2"show profiles name="profile 3" key=clearshow profiles

这时候显然就是走到头了,已经不能再深挖了。

9.2  查看已经保存的wifi网络(不包括密码)

(1)查看所有接口上已经保存的WIFI网络

执行命令【netsh wlan show profiles】,查看当前系统已经保存的网络

C:\WINDOWS\system32>netsh wlan show profile接口 WLAN 上的配置文件:组策略配置文件(只读)
---------------------------------<无>用户配置文件
-------------所有用户配置文件 : 醉生梦死所有用户配置文件 : @PHICOMM_06_5G所有用户配置文件 : @PHICOMM_32接口 WLAN 2 上的配置文件:组策略配置文件(只读)
---------------------------------<无>用户配置文件
-------------所有用户配置文件 : @PHICOMM_32所有用户配置文件 : @PHICOMM_06_5G所有用户配置文件 : 醉生梦死

(2)查看指定接口上的已保存的WIFI网络

执行命令【netsh wlan show profile interface="WLAN 2"】

9.3 查看指定wif的密码

假如我们要显示WLAN接口下保存的「@PHICOMM_32」的密码,可以执行命令【netsh wlan show profile name="@PHICOMM_32" key=clear】

C:\WINDOWS\system32>netsh wlan show profile name="@PHICOMM_32" key=clear接口 WLAN 上的配置文件 @PHICOMM_32:
=======================================================================已应用: 所有用户配置文件配置文件信息
-------------------版本                   : 1类型                   : 无线局域网名称                   : @PHICOMM_32控制选项               :连接模式           : 自动连接网络广播           : 只在网络广播时连接AutoSwitch         : 请勿切换到其他网络MAC 随机化: 禁用连接设置
---------------------SSID 数目              : 1SSID 名称              :“@PHICOMM_32”网络类型               : 结构无线电类型             : [ 任何无线电类型 ]供应商扩展名           : 不存在安全设置
-----------------身份验证         : WPA2 - 个人密码                 : CCMP身份验证         : WPA2 - 个人密码                 : GCMP安全密钥               : 存在关键内容            : as69865069847费用设置
-------------费用                : 无限制阻塞                : 否接近数据限制        : 否过量数据限制        : 否漫游                : 否费用来源            : 默认接口 WLAN 2 上的配置文件 @PHICOMM_32:
=======================================================================已应用: 所有用户配置文件配置文件信息
-------------------版本                   : 1类型                   : 无线局域网名称                   : @PHICOMM_32控制选项               :连接模式           : 自动连接网络广播           : 只在网络广播时连接AutoSwitch         : 请勿切换到其他网络MAC 随机化: 禁用连接设置
---------------------SSID 数目              : 1SSID 名称              :“@PHICOMM_32”网络类型               : 结构无线电类型             : [ 任何无线电类型 ]供应商扩展名           : 不存在安全设置
-----------------身份验证         : WPA2 - 个人密码                 : CCMP身份验证         : WPA2 - 个人密码                 : GCMP安全密钥               : 存在费用设置
-------------费用                : 无限制阻塞                : 否接近数据限制        : 否过量数据限制        : 否漫游                : 否费用来源            : 默认

十、Netsh命令操作防火墙

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)相关推荐

  1. 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(ping、telnet、nslookup、arp、tracert、ipconfig)

    一.查看网络延迟和丢包情况--ping命令 1.1 查看ping的帮助信息--[ping /?] 执行命令[ping /?],打印帮助信息. 1.2 最基本的用法--[ping ip/域名] 查看本机 ...

  2. 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令-用户账户管理-文件(夹)共享(net)

    一.打印命令帮助信息 执行命令[net /?]或[net help],得到帮助信息如下 C:\WINDOWS\system32>net help 此命令的语法是:NET HELP command ...

  3. 【批处理DOS-CMD命令-汇总和小结】-跳转、循环、条件命令(goto、errorlevel、if、for[读取、切分、提取字符串]、)cmd命令错误汇总,cmd错误

    一.本文摘要 此文主要研究对代码分支化执行和重复利用的实现. 分支化执行指根据中途的实际执行结果决定下一步执行的代码,跳转的代码行号:分支化执行大概分为跳转执行.条件判断执行:因此,分支化执行基本是只 ...

  4. 【批处理DOS-CMD命令-汇总和小结】-CMD窗口的设置与操作命令(cd、title、mode、color、pause、chcp、exit、goto :eof)

    一. 改变cmd窗口当前目录--资源管理器或cd 具体方法详见我的专栏中另一篇文章的章节1.5. [批处理DOS-CMD命令-汇总和小结]-文件与目录操作命令(md.rd.xcopy.dir.cd.s ...

  5. 【批处理DOS-CMD命令-汇总和小结】-将文件夹映射成虚拟磁盘——subst

    一.subst命令的意义 有时候文件(夹)的目录很深,每一次打开的时候需要一直切换目录,有了镜像虚拟磁盘subst命令,临时地将文件夹映射成磁盘显示在我的电脑中,就会让工作变得更轻松,可以节约很多时间 ...

  6. 【批处理DOS-CMD命令-汇总和小结】-Cmd窗口中常用操作符(<、<<、<、>、>>、>、、、||、|、()、;、@、““、‘‘)

    一.重定向操作符--<.<<.&<.>.>>.&> 1.1 清除重定向--<和> cmd>file     //cmd ...

  7. 【批处理DOS-CMD命令-汇总和小结】-cmd扩展命令、扩展功能(cmd /e:on、cmd /e:off)

    一.问题背景 在打印erase的帮助信息时,提示如果启用扩展命令,...,如果是这个命令出现还好,没有引起我的注意,但是我发觉好多命令的最后都有提到这个扩展功能了. 不得已去百度谷歌查一通,资料很少, ...

  8. 【批处理DOS-CMD命令-汇总和小结】-cmd的内部命令和外部命令怎么区分,CMD命令和运行(win+r)命令的区别,cmd的命令扩展(扩展命令)

    一.cmd的内部命令和外部命令怎么区分? 区分规则很简单,在cmd窗口中用help命令能打印出来的命令都是cmd内部命令,没包括在里面的都是外部命令. D:\>help 有关某个命令的详细信息, ...

  9. 【批处理DOS-CMD命令-汇总和小结】-批处理命令中的参数%0、%1、%2、%[0-9]、%0-9和批处理命令参数位置切换命令shift,dos命令中操作符%用法

    一.执行CMD命令的3种方式 执行CMD命令的两种方式分别是手动创建一个Cmd窗口和执行bat批处理文件. 第一种,先手动创建一个cmd窗口,然后往里面输入cmd命令,最后回车执行. 第二种,先在一个 ...

最新文章

  1. 同步控制 之“重入锁”
  2. Failed to install .apk on device 'emulator-5554': timeout解决方法
  3. 硬件:RS232基础知识笔记
  4. atitit。wondows 右键菜单的管理与位置存储
  5. java实现遍历树形菜单方法——struts.xml实现
  6. 这是一场数学、数学、数学的盛会
  7. (多表)关联update 超过两个字段以上
  8. 2021.08.28-MMsegmentation0.16.0+Cuda10.1+Ubuntu16.04+Pytorch1.8环境安装
  9. 本地如何安装运行多个vue.js项目?
  10. LVM的创建扩展缩减与删除
  11. 说一下你对多态的理解?_如何去理解java中的多态?从jvm角度分析也许让你更清晰...
  12. 通过Spannable对象设置textview的样式
  13. Linux双系统安装指南
  14. 单片机原理及应用(c51语言版)(一)
  15. iOS中 语音识别功能/语音转文字教程详解
  16. 数学分析原理 定理 6.10
  17. C++编程验证费马小定律
  18. SAP BTE 增强 物料主数据变更
  19. 免费微信开通检测,有没有免费的微信开通检测工具呢
  20. 截图与贴图神器:Snipaste

热门文章

  1. 仿真必修课:计算电磁学入门(附件参考文献与笔记)
  2. 终于丫你奶奶的浩方了!
  3. 汇总!单片机(MCU)最强科普
  4. 遗传算法(GA)附Matlab代码(copy能用)寻优算法
  5. [react] Redux基本介绍 ===
  6. 北大青鸟java项目实践_s2 北大青鸟Java S2 八个上机考试项目 Develop 249万源代码下载- www.pudn.com...
  7. 【Python】实现键盘鼠标动作录制和执行的小工具
  8. 在ARM-linux上实现4G模块simcom7100c 的PPP拨号上网
  9. 虚幻四蓝图编辑之开关门
  10. Surfer网格文件的VC读写代码​