2017-10-05 96 views
0

我有一個安裝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

回答

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" 

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