powershell管理防火墙的方式有两种,一种使用的netsh,一种使用的原生powershell,netsh理论上可以在cmd上执行。
启/禁用防火墙
Netsh --启用全部防火墙
netsh advfirewall set allprofiles state on
禁用全部防火墙
netsh advfirewall set allprofiles state off
Windows PowerShell --可以按需启用对应网络的防火墙
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
禁用全部防火墙
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled false
创建防火墙规则
允许 Telnet 应用程序侦听网络。 此防火墙规则的作用域为使用关键字而不是 IP 地址的本地子网
Netsh
netsh advfirewall firewall add rule name="Allow Inbound Telnet" dir=in program= %SystemRoot%\System32\tlntsvr.exe remoteip=localsubnet action=allow
powershell
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 地址访问进来。
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
尝试通过搜索防火墙规则启用他们的访问,
Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction –eq “Inbound” -and $_.Action –eq “Allow”} | Set-NetFirewallRule -RemoteAddress 192.168.0.2
启用现有的防火墙策略
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
netsh advfirewall firewall delete rule name=“Allow Web 80”
powershell
Remove-NetFirewallRule –DisplayName “Allow Web 80”
删除所有阻止的防火墙策略
Remove-NetFirewallRule –Action Block
查询防火墙规则
Get-NetFirewallRule
获取远程电脑的防火墙策略
Get-NetFirewallRule –CimSession RemoteComputerName
$RemoteSession = New-CimSession –ComputerName RemoteComputerName
Remove-NetFirewallRule –DisplayName “AllowWeb80” –CimSession $RemoteSession -Confirm