---
title: Use netsh advfirewall firewall context
description: This article describes how to use the netsh advfirewall firewall context instead of the netsh firewall context to control Windows Firewall behavior.
ms.date: 02/12/2026
manager: dcscontentpm
audience: itpro
ms.topic: troubleshooting
ms.reviewer: kaushika
ms.custom:
- sap:network connectivity and file sharing\windows firewall with advanced security (wfas)
- pcy:WinComm Networking
appliesto:
- Supported versions of Windows Server
---
# Use netsh advfirewall firewall instead of netsh firewall to control Windows Firewall behavior
This article describes how to use the `netsh advfirewall` firewall context instead of the `netsh firewall` context to control Windows Firewall behavior.
_Original KB number:_ 947709
## Summary
The `netsh advfirewall` firewall command-line context is available in Windows Server 2012 R2. This context provides the functionality for controlling Windows Firewall behavior that was provided by the `netsh firewall` firewall context.
This context also provides functionality for more precise control of firewall rules. These rules include the following per-profile settings:
- Domain
- Private
- Public
The `netsh firewall` command-line context might be deprecated in a future version of the Windows operating system. We recommend that you use the `netsh advfirewall` firewall context to control firewall behavior.
> [!IMPORTANT]
> If you are a member of the Administrators group, and User Account Control is enabled on your computer, run the commands from a command prompt with elevated permissions. To start a command prompt with elevated permissions, find the icon or Start menu entry that you use to start a command prompt session, right-click it, and then click **Run as administrator**.
Some examples of frequently used commands are provided in the following tables. You can use these examples to help you migrate from the older `netsh firewall` context to the new `netsh advfirewall` firewall context.
Additionally, the `netsh advfirewall` commands that you can use to obtain detailed inline help are provided.
## Command example 1: Enable a program
|Old command|New command|
|---|---|
|`netsh firewall add allowedprogram C:\MyApp\MyApp.exe "My Application" ENABLE`| `netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes`|
| `netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=Domain`| `netsh advfirewall firewall add rule name="My Application" dir=in action=allow program= "C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain` |
|`netsh firewall add allowedprogram program=C:\MyApp\MyApp.exe name="My Application" mode=ENABLE scope=CUSTOM addresses=157.60.0.1,172.16.0.0/16,LocalSubnet profile=ALL`|Run the following commands:
`netsh advfirewall firewall add rule name="My Application" dir=in action=allow program= "C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=domain`
`netsh advfirewall firewall add rule name="My Application" dir=in action=allow program="C:\MyApp\MyApp.exe" enable=yes remoteip=157.60.0.1,172.16.0.0/16,LocalSubnet profile=private`|
For more information about how to add firewall rules, run the following command:
```console
netsh advfirewall firewall add rule ?
```
## Command example 2: Enable a port
|Old command|New command|
|---|---|
|`netsh firewall add portopening TCP 80 "Open Port 80"`|`netsh advfirewall firewall add rule name= "Open Port 80" dir=in action=allow protocol=TCP localport=80`|
For more information about how to add firewall rules, run the following command:
```console
netsh advfirewall firewall add rule ?
```
## Command example 3: Delete enabled programs or ports
|Old command|New command|
|---|---|
|`netsh firewall delete allowedprogram C:\MyApp\MyApp.exe`|`netsh advfirewall firewall delete rule name= rule name program="C:\MyApp\MyApp.exe"`|
|`delete portopening protocol=UDP port=500`|`netsh advfirewall firewall delete rule name= rule name protocol=udp localport=500`|
For more information about how to delete firewall rules, run the following command:
```console
netsh advfirewall firewall delete rule ?
```
## Command example 4: Configure ICMP settings
|Old command|New command|
|---|---|
|`netsh firewall set icmpsetting 8`| `netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow`|
| `netsh firewall set icmpsetting type=ALL mode=enable`| `netsh advfirewall firewall add rule name= "All ICMP V4" protocol=icmpv4:any,any dir=in action=allow`|
| `netsh firewall set icmpsetting 13 disable all`| `netsh advfirewall firewall add rule name="Block Type 13 ICMP V4" protocol=icmpv4:13,any dir=in action=block`|
For more information about how to configure ICMP settings, run the following command:
```console
netsh advfirewall firewall add rule ?
```
## Command example 5: Set logging
|Old command|New command|
|---|---|
| `netsh firewall set logging %systemroot%\system32\LogFiles\Firewall\pfirewall.log 4096 ENABLE ENABLE`|Run the following commands:
`netsh advfirewall set currentprofile logging filename %systemroot%\system32\LogFiles\Firewall\pfirewall.log`
`netsh advfirewall set currentprofile logging maxfilesize 4096`
`netsh advfirewall set currentprofile logging droppedconnections enable`
`netsh advfirewall set currentprofile logging allowedconnections enable` |
For more information, run the following command:
```console
netsh advfirewall set currentprofile ?
```
If you want to set logging for a particular profile, use one of the following options instead of the `currentprofile` option:
- `Domainprofile`
- `Privateprofile`
- `Publicprofile`
## Command example 6: Enable Windows firewall
|Old command|New command|
|---|---|
| `netsh firewall set opmode ENABLE`| `netsh advfirewall set currentprofile state on` |
| `netsh firewall set opmode mode=ENABLE exceptions=enable`|Run the following commands:
`Netsh advfirewall set currentprofile state on`
`netsh advfirewall set currentprofile firewallpolicy blockinboundalways,allowoutbound`|
| `netsh firewall set opmode mode=enable exceptions=disable profile=domain`|Run the following commands:
`Netsh advfirewall set domainprofile state on`
`netsh advfirewall set domainprofile firewallpolicy blockinbound,allowoutbound`|
| `netsh firewall set opmode mode=enable profile=ALL`|Run the following commands:
`netsh advfirewall set domainprofile state on`
`netsh advfirewall set privateprofile state on`|
For more information, run the following command:
```console
netsh advfirewall set currentprofile ?
```
If you want to set the firewall state for a particular profile, use one of the following options instead of the `currentprofile` option:
- `Domainprofile`
- `Privateprofile`
- `Publicprofile`
## Command example 7: Restore policy defaults
|Old command|New command|
|---|---|
|`netsh firewall reset`|`netsh advfirewall reset`|
For more information, run the following command:
```console
netsh advfirewall reset ?
```
## Command example 8: Enable specific services
|Old command|New command|
|---|---|
| `netsh firewall set service FileAndPrint`|`netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes`|
| `netsh firewall set service RemoteDesktop enable`|`netsh advfirewall firewall set rule group="remote desktop" new enable=Yes`|
| `netsh firewall set service RemoteDesktop enable profile=ALL`|Run the following commands:
`netsh advfirewall firewall set rule group="remote desktop" new enable=Yes profile=domain`
`netsh advfirewall firewall set rule group="remote desktop" new enable=Yes profile=private`|