Windows防火墙打开或关闭脚本

时间:2017-10-05 11:07:20

标签: windows batch-file cmd netsh

我有一个安装后设置SQL Server的脚本。它会检测Windows防火墙是否已打开,并将端口添加到Windows防火墙服务。

然而,如果实际确定它是否“真正”运行似乎非常令人困惑。

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

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

指向可能是一种更好的方法的指针,以避免在不需要的情况下运行部分脚本。

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

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

1 个答案:

答案 0 :(得分:2)

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