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

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

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

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

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

但还是没有快乐。

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

编辑:该规则已在 Windows 防火墙中创建,但我需要一个返回 True/False 检查响应的命令

答案1

在评论中回答你的问题: 编写一个 PowerShell 脚本,返回端口是否打开,因此我需要从 PowerShell 获得肯定/否定的响应

也许这可以帮到你,使用 System.Net.Sockets.TcpClient类来测试端口是打开还是关闭。看下面的代码:

$ErrorActionPreference = "silentlycontinue"

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

$tcp.connectedtrue如果连接成功则返回。False如果连接不成功,则$ErrorActionPreference = "silentlycontinue"变量将隐藏错误消息。

例子:

在此处输入图片描述

答案2

Test-NetConnection 将始终对本地主机端口返回“False”。使用另一个工具(比如 canyouseeme.org)如果您正在检查某个端口是否从远程地址打开。

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

相关内容