是Windows防火墙开启或关闭脚本

是Windows防火墙开启或关闭脚本

问题描述:

我有一个安装SQL Server后的脚本。它检测Windows防火墙是否打开并将端口添加到Windows防火墙服务。是Windows防火墙开启或关闭脚本

但是,如何真正地确定它是否“真正”运行似乎很混乱。

我认为通过检查服务是否正在运行'然后做或不做'就足够了,但即使Windows防火墙关闭服务仍然运行,所以端口添加netsh脚本部分运行不必要。

我也查看了注册表中的设置,即使服务正在运行但防火墙关闭,它们也可以设置为打开。

任何指针可能是一个更好的方法,以避免运行脚本部分而不需要。

通常安装服务器2008大多数,一些2012年&奇2016年。谢谢。

sc query MpsSvc | find "RUNNING" >nul 
IF %ERRORLEVEL% EQU 0 (goto firewall) ELSE (goto start) 
+1

你可能会调查什么的'的netsh命令advfirewall'会产生。另见https://community.spiceworks.com/how_to/71739-check-windows-firewall-status-via-command-line – lit

禁用Windows Defender防火墙的正确方法是禁用Windows Defender防火墙配置文件并使服务保持运行状态。

所以......

关闭使用批处理文件:

@NetSh AdvFirewall Set AllProfiles State Off 

打开使用批处理文件:

@NetSh AdvFirewall Set AllProfiles State On 

关闭使用PowerShell从一个批处理文件:

@Powershell -C "Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False" 

Tur N于使用PowerShell从一个批处理文件:

@Powershell -C "Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True" 

要确定的状态,你可以解析的Show结果:

@NetSh AdvFirewall Show AllProfiles State|Find /I " ON">Nul&&(@Echo Is On)||@Echo Is Off