powershell 管理启用禁用windows防火墙及启用windows高级防火墙规则

powershell管理防火墙的方式有两种,一种使用的netsh,一种使用的原生powershell,netsh理论上可以在cmd上执行。

启/禁用防火墙

Netsh –启用全部防火墙

1
netsh advfirewall set allprofiles state on

禁用全部防火墙

1
netsh advfirewall set allprofiles state off

Windows PowerShell –可以按需启用对应网络的防火墙

1
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True

禁用全部防火墙

1
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled false

创建防火墙规则

允许 Telnet 应用程序侦听网络。 此防火墙规则的作用域为使用关键字而不是 IP 地址的本地子网
Netsh

1
netsh advfirewall firewall add rule name="Allow Inbound Telnet" dir=in program= %SystemRoot%\System32\tlntsvr.exe remoteip=localsubnet action=allow

powershell

1
2
3
New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow
New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management”
New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management”

关于powershell创建防火墙规则详细参数可以参考官网:
https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=windowsserver2022-ps

修改现有防火墙规则

允许 Web 80 规则,该规则为入站未经请求的流量启用 TCP 端口 80。 可以通过指定规则的可读本地化名称来更改规则,以匹配其流量将允许的 Web 服务器的不同远程 IP 地址访问进来。

1
2
netsh advfirewall firewall set rule name="Allow Web 80" new remoteip=192.168.0.2
Set-NetFirewallRule –DisplayName “Allow Web 80” -RemoteAddress 192.168.0.2,10.10.10.10

尝试通过搜索防火墙规则启用他们的访问,

1
Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction –eq “Inbound” -and $_.Action –eq “Allow”} | Set-NetFirewallRule -RemoteAddress 192.168.0.2

启用现有的防火墙策略

1
2
3
Set-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” –Enabled True
Enable-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” -Verbose
Enable-NetFirewallRule -Displayname “Windows Defender Firewall Remote Management” -Verbose

删除防火墙规则

Netsh

1
netsh advfirewall firewall delete rule name=“Allow Web 80”

powershell

1
Remove-NetFirewallRule –DisplayName “Allow Web 80”

删除所有阻止的防火墙策略

1
Remove-NetFirewallRule –Action Block

查询防火墙规则

1
Get-NetFirewallRule

获取远程电脑的防火墙策略

1
2
3
Get-NetFirewallRule –CimSession RemoteComputerName
$RemoteSession = New-CimSession –ComputerName RemoteComputerName
Remove-NetFirewallRule –DisplayName “AllowWeb80” –CimSession $RemoteSession -Confirm