windows 防火墙开启或关闭脚本

is windows firewall on or off script

我有一个脚本可以在安装后设置 SQL 服务器。它检测 windows 防火墙是否打开并向 windows 防火墙服务添加端口。

然而,如何实际确定它是否 "really" 运行 似乎非常令人困惑。

我想通过检查服务是否 运行 'then doing stuff or not' 就足够了,但似乎即使 windows 防火墙关闭服务仍然运行,所以端口添加 netsh 脚本部分不必要地运行。

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

任何可能是更好的方法来避免脚本的 运行 部分而实际上不需要的任何指示。

通常主要安装服务器 2008,一些 2012 和奇怪的 2016。谢谢。

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

禁用 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"

使用批处理文件中的 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