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

一、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】的完全一样。

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第1张图片

然而!!!

对于命令后带有「更改到 ' 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】不是上下文命令,可以不用在上下文环境中执行。

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第2张图片 

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第3张图片

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

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

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

3.1 打印帮助信息

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

C:\WINDOWS\system32>netsh dump /?

用法: dump

说明:
    创建一个包含当前配置的脚本文件。如果保存到
    文件,此脚本可以用来还原更改的配置设置。

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

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第4张图片

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第5张图片

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第6张图片 

 

四、进入或更改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上下文。

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第7张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第8张图片

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

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

netsh interface ipv4>dump


#========================
# IPv4 配置
#========================
pushd interface ipv4

reset
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=disabled


popd
# IPv4 配置结束

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

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

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第9张图片

而非常诡异的是,虽然是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=][/<整数>] [[mask=]]
             [[gateway=]|none [gwmetric=]<整数>]
             [[type=]unicast|anycast]
             [[subinterface=]<字符串>]
             [[store=]active|persistent]

参数:

       标记            值
       name         - 接口名称或索引。
       source       - 下列值之一:
                      dhcp: 启用 DHCP,以便为指定的接口
                            配置 IP 地址。
                      static: 禁用 DHCP,以便为指定的接口
                            配置 IP 地址。如果配置了
                            地址或网关,则必须指定
                            该值。
       address      - 要添加或修改的 IPv4 地址,
                      后边也可以加上子网前缀长度。
       mask         - 指定的 IP 地址的 IP 子网掩码。
       gateway      - 下列值之一:
                      : 正在设置的静态 IP 地址的
                                      特定默认网关。
                      none: 未设置任何默认网关。此为默认值。
       gwmetric     - 默认网关的跃点数。仅在指定了网关时
                      才应设置该字段。
       type         - 下列值之一:
                      unicast: 将地址标记为单播地址。
                               此为默认值。
                      anycast: 将地址标记为任意广播地址。
       subinterface - 默认网关存在于其上的子接口的 LUID。
                      此参数仅用于带有
                      多个子接口的接口。
       store        - 下列值之一:
                      active: 设置仅持续到下一次启动。
                      persistent: 设置永久有效。此为默认值。

备注: 用来启用或禁用 IP 地址配置的 DHCP。
      同时删除所有以前的静态 IP 地址和默认网关,
      并可以添加新的静态 IP 地址和默认网关。

示例:

       set address name="Wired Ethernet Connection" source=dhcp
       set 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=] [address=]
             [[type=]unicast|anycast]
             [[validlifetime=]|infinite]
             [[preferredlifetime=]|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地址是自动获取的。

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第10张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第11张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第12张图片

5.4 设置动态IP地址

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第13张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第14张图片

 六、使用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 防火墙」窗口。

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第15张图片

而后在高级设置里,窗口名为「高级安全Vindows Defender防火墙」,我们可以添加各种规则来细化地设置防火墙。 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第16张图片

7.2 打印netsh firewall的帮助信息

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

C:\WINDOWS\system32>netsh firewall /?

下列指令有效:

此上下文中的命令:
?              - 显示命令列表。
add            - 添加防火墙配置。
delete         - 删除防火墙配置。
dump           - 显示一个配置脚本。
help           - 显示命令列表。
set            - 设置防火墙配置。
show           - 显示防火墙配置。

若需要命令的更多帮助信息,请键入命令,接着是空格,
后面跟 ?。

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第17张图片

但是,惊奇的是,我们执行【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 ALL
      set portopening ALL 53 DNS ENABLE CUSTOM
          157.60.0.1,172.16.0.0/16,10.0.0.0/255.0.0.0,
          12AB:0000:0000:CD30::/60,LocalSubnet
      set portopening protocol=ALL port=53 name=DNS mode=ENABLE scope=CUSTOM
          addresses=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】,结果如下

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第18张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第19张图片 

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第20张图片

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 ENABLE
      set opmode mode=ENABLE exceptions=DISABLE

      重要信息:"netsh firewall" 已弃用;
      请改用 "netsh advfirewall firewall"。
      有关使用 "netsh advfirewall firewall" 命令
      而非 "netsh firewall" 的详细信息,请参阅
      https://go.microsoft.com/fwlink/?linkid=121488 上的 KB 文章 947709。

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第21张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第22张图片

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第23张图片

 

八、借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 rule
      group= | name=
      [dir=in|out]
      [profile=public|private|domain|any[,...]]
      [program=]
      [service=service short name|any]
      [localip=any|||||]
      [remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
         ||||]
      [localport=0-65535|[,...]|RPC|RPC-EPMap|IPHTTPS|any]
      [remoteport=0-65535|[,...]|any]
      [protocol=0-255|icmpv4|icmpv6|icmpv4:type,code|icmpv6:type,code|
         tcp|udp|any]
      new
      [name=]
      [dir=in|out]
      [program=
      [service=|any]
      [action=allow|block|bypass]
      [description=]
      [enable=yes|no]
      [profile=public|private|domain|any[,...]]
      [localip=any|||||]
      [remoteip=any|localsubnet|dns|dhcp|wins|defaultgateway|
         ||||]
      [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=]
      [rmtusrgrp=]
      [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" new
      remoteip=192.168.0.2

      启用带有分组字符串 "Remote Desktop" 的组:
      netsh advfirewall firewall set rule group="remote desktop" new
      enable=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】

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第24张图片

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第25张图片

 

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

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

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

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

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

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第26张图片

 【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第27张图片

 

九、借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=]] [interface=] [key=]

参数:

    标记            值
    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=clear
    show 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"】

【批处理DOS-CMD命令-汇总和小结】-上网和网络通信相关命令(netsh)_第28张图片

 

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 数目              : 1
    SSID 名称              :“@PHICOMM_32”
    网络类型               : 结构
    无线电类型             : [ 任何无线电类型 ]
    供应商扩展名           : 不存在

安全设置
-----------------
    身份验证         : WPA2 - 个人
    密码                 : CCMP
    身份验证         : WPA2 - 个人
    密码                 : GCMP
    安全密钥               : 存在
    关键内容            : as69865069847

费用设置
-------------
    费用                : 无限制
    阻塞                : 否
    接近数据限制        : 否
    过量数据限制        : 否
    漫游                : 否
    费用来源            : 默认


接口 WLAN 2 上的配置文件 @PHICOMM_32:
=======================================================================

已应用: 所有用户配置文件

配置文件信息
-------------------
    版本                   : 1
    类型                   : 无线局域网
    名称                   : @PHICOMM_32
    控制选项               :
        连接模式           : 自动连接
        网络广播           : 只在网络广播时连接
        AutoSwitch         : 请勿切换到其他网络
        MAC 随机化: 禁用

连接设置
---------------------
    SSID 数目              : 1
    SSID 名称              :“@PHICOMM_32”
    网络类型               : 结构
    无线电类型             : [ 任何无线电类型 ]
    供应商扩展名           : 不存在

安全设置
-----------------
    身份验证         : WPA2 - 个人
    密码                 : CCMP
    身份验证         : WPA2 - 个人
    密码                 : GCMP
    安全密钥               : 存在

费用设置
-------------
    费用                : 无限制
    阻塞                : 否
    接近数据限制        : 否
    过量数据限制        : 否
    漫游                : 否
    费用来源            : 默认

十、Netsh命令操作防火墙

 

你可能感兴趣的:(Cmd和Dos,cmd,dos,windows)