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 | New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%\System32\tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow |
关于powershell创建防火墙规则详细参数可以参考官网:
https://docs.microsoft.com/en-us/powershell/module/netsecurity/new-netfirewallrule?view=windowsserver2022-ps
修改现有防火墙规则
允许 Web 80 规则,该规则为入站未经请求的流量启用 TCP 端口 80。 可以通过指定规则的可读本地化名称来更改规则,以匹配其流量将允许的 Web 服务器的不同远程 IP 地址访问进来。
1 | netsh advfirewall firewall set rule name="Allow Web 80" new remoteip=192.168.0.2 |
尝试通过搜索防火墙规则启用他们的访问,
1 | Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction –eq “Inbound” -and $_.Action –eq “Allow”} | Set-NetFirewallRule -RemoteAddress 192.168.0.2 |
启用现有的防火墙策略
1 | Set-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” –Enabled True |
删除防火墙规则
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 | Get-NetFirewallRule –CimSession RemoteComputerName |