Windows-Firewall

netsh advfirewall 設置儲存 gpo:%COMPUTERNAME% 不起作用

  • November 3, 2014

我負責一組處理高度機密數據的電腦。它們無法連接到 Internet 甚至公司網路,只能連接到網路驅動器。所以我在網路驅動器上寫了一個批處理文件並在每台電腦上執行它以一致地應用安全設置。

批處理文件netsh exec使用以下腳本呼叫:

advfirewall
set store gpo = %COMPUTERNAME%
reset
set store local
reset

問題是環境變數%COMPUTERNAME%無法解析為實際的電腦名稱,因此沒有重置 GPO,並且兩個位置的設置存在衝突。此外,netsh advfirewall reset僅重置local儲存並且set store只能從 netsh 腳本執行(netsh advfirewall set store gpo批處理文件中的直接不起作用)。

如何set store訪問執行批處理文件的機器的 GPO?或者是否有另一種方法可以從命令行重置 GPO 設置(對於具有高級安全性的 Windows 防火牆)?我了解這些設置未儲存在Registry.pol.

我懷疑你試圖直接傳遞%COMPUTERNAME%netsh。它不會擴展環境變數。讓 shell 為您擴展變數,如下所示:

@echo off
SET F="%TEMP%\%RANDOM%.txt"

echo advfirewall>%F%
echo set store gpo = %COMPUTERNAME%>>%F%
echo reset>>%F%
echo set store local>>%F%
echo reset>>%F%

netsh -f %F%
del %F%

netsh最終得到一個已經包含擴展環境變數的腳本。

引用自:https://serverfault.com/questions/638987