PowerShell:如何打开Windows防火墙端口

我需要使用PowerShell在Windows防火墙上打开一个端口,所以我这样做

netsh advfirewall firewall add rule name = "Open port 4443 test" dir=in action=allow protocol=TCP localport=4443 

接着

 Test-NetConnection -Port 4443 -ComputerName localhost 

检查端口是否打开但仍然closures。

所以我尝试使用另一个命令:

 New-NetFirewallRule -DisplayName "Allow inbound TCP port 4443" -Direction inbound -LocalPort 4443 -Protocol TCP -Action Allow 

但仍然没有喜悦。

所以问题是: 如何通过PowerShell打开端口4443?

编辑:规则创build到Windows防火墙,但我需要一个命令,返回我一个真/假检查响应

Test-NetConnection将始终为本地端口返回“False”。 如果您正在检查端口是否从远程地址打开,请使用其他工具( 如canyouseeme.org )。

您的Powershell看起来很好,如果您查看Windows防火墙规则GUI,则应该看到该规则,但无法按照本地尝试的方式进行testing。

要在注释中回答你的问题: 要创build一个PowerShell脚本,如果端口处于打开状态,将会返回你,所以我需要从PowerShell获得肯定/否定的回应

也许这可以帮助你,使用System.Net.Sockets.TcpClient类来testing端口是否打开或closures。 看下面的代码:

 $tcp = New-Object System.Net.Sockets.TcpClient $tcp.Connect("localhost","3389") $tcp.Connected 

如果连接成功, $tcp.connected将返回true 。 如果它不会成功,它会用false布尔错误消息。

例:

在这里输入图像说明