Last updated on 2022/10/29
修改无法在GUI中修改的网络连接配置
有时候我们为了安全性,会关闭公用网络的文件夹共享,但是如果同时你还使用Hyper-v共享宿主机的文件夹的话,你会发现这时无法连接共享文件夹,这是因为windows虚拟交换机的默认属性是公用网络,而我们已经关掉了公用网络的文件夹共享,这时候,我们需要修改虚拟交换机的网络属性为专用。但是你会发现,Windows设置中并没有虚拟交换机的选项,也就无法通过设置来更改,而下面的两条命令就是通过命令行来解决这个问题。
Get-NetConnectionProfile
Set-NetConnectionProfile -InterfaceAlias "vEthernet (NAT Switch)" -NetworkCategory Private
或者(个人感觉下面的比较好):
Set-NetConnectionProfile -Name "未识别的网络" -NetworkCategory Private
通过上面两条命令即可设置网络属性为专用网络。注意,Get、Set命令均需要通过powershell执行。
又一个冷知识,笑😂。
更新:以上是偏向于原理的介绍,下面给出一个我自己所使用的Power Shell实例,更加实用:
Process { While($true) { Get-NetConnectionProfile | % { Process { If(($_.InterfaceAlias -eq "vEthernet (Virtual Switch)") -and ( $_.NetworkCategory -eq "Private" )){ break } else { Set-NetConnectionProfile -InterfaceAlias "vEthernet (Virtual Switch)" -NetworkCategory Private } } } } exit }
Powershell -Command "Process { While($true) { Get-NetConnectionProfile | % { Process { If(($_.InterfaceAlias -eq """vEthernet (Virtual Switch)""") -and ( $_.NetworkCategory -eq """Private""" )){ break } else { Set-NetConnectionProfile -InterfaceAlias """vEthernet (Virtual Switch)""" -NetworkCategory Private } } } } exit }"
我相信会点代码的人应该都能看懂这两段命令的含义,需要说明的是:
- 理论上,Power Shell命令执行完毕后就自动结束了,但是我最后使用
exit
退出是因为在break
跳出循环后此时程序的返回值为1,而不是0,这会造成一些问题。当然你也可以不用break
而直接使用exit
退出:Process { While($true) { Get-NetConnectionProfile | % { Process { If(($_.InterfaceAlias -eq "vEthernet (Virtual Switch)") -and ( $_.NetworkCategory -eq "Private" )){ exit } else { Set-NetConnectionProfile -InterfaceAlias "vEthernet (Virtual Switch)" -NetworkCategory Private } } } } }
可能这样更好看?笑😏。 - 而后一个实例只是为了提醒各位,在实际使用的时候,注意引号!注意引号!注意引号!