我需要使用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布尔错误消息。
例: