Managing Windows Firewall Rules with PowerShell: A Comprehensive Guide

Edward Zhou
Edward Zhou

CEO & Co-Founder

 
July 17, 2025 3 min read

Managing Windows Firewall Rules with PowerShell: Part 2 – Overcoming Cmdlet Limitations

wall between a computer monitor and a shield

Image courtesy of ITPro Today

In this section, we will discuss how to extract critical firewall rule details that the standard Get-NetFirewallRule cmdlet can't provide on its own. The Get-NetFirewallRule cmdlet retrieves general-purpose metadata for Windows firewall rules, but it does not return specific details such as local port numbers, remote port numbers, or protocols.

Retrieving Local and Remote Port and Protocol

To retrieve the protocol, local port number, and remote port used by a specific firewall rule, you can use the Get-NetFirewallPortFilter cmdlet. For example, if you want to find this information for a firewall rule named "My Example Rule," use the following command:

Get-NetFirewallRule -DisplayName "My Example Rule" | Get-NetFirewallPortFilter | Select-Object Name, Protocol, LocalPort, RemotePort

This command returns the protocol, local port number, and remote port associated with the specified firewall rule.

Retrieving Addresses

To retrieve the remote address and local address for a given rule, utilize the Get-NetFirewallAddressFilter cmdlet. This can be done as follows:

Get-NetFirewallRule -DisplayName "My Example Rule" | Get-NetFirewallAddressFilter | Select-Object Name, RemoteAddress, LocalAddress

This command will return the remote address and local address for the specified firewall rule.

screen shot of retrieving the local address and the remote address

Image courtesy of ITPro Today

Producing a Consolidated Output

If you need to access all information about a firewall rule in one place, consider using a PowerShell script to consolidate the details. Here’s a sample script:

$RuleName = "My Example Rule"
$Rule = Get-NetFirewallRule -DisplayName $RuleName
$PortFilter = $Rule | Get-NetFirewallPortFilter
$AddressFilter = $Rule | Get-NetFirewallAddressFilter
$ConsolidatedInfo = [PSCustomObject]@{
    Name          = $Rule.DisplayName
    Direction     = $Rule.Direction
    Action        = $Rule.Action
    Protocol      = $PortFilter.Protocol
    LocalPort     = $PortFilter.LocalPort
    RemotePort    = $PortFilter.RemotePort
    LocalAddress  = $AddressFilter.LocalAddress
    RemoteAddress = $AddressFilter.RemoteAddress
}

Write-Host $ConsolidatedInfo

This script collects and displays all relevant information about the specified firewall rule in a single output.

This script produces a consolidated output of the firewall rule information

Image courtesy of ITPro Today

Managing Windows Firewall Rules with PowerShell: Part 1 – Beyond the GUI

brick wall being built to separate two laptops

Image courtesy of ITPro Today

PowerShell offers a more efficient way to manage Windows firewall rules compared to the GUI. For example, four primary cmdlets can be used:

  • Get-NetFirewallRule: Displays firewall rules
  • Set-NetFirewallRule: Edits a firewall rule
  • Remove-NetFirewallRule: Deletes a firewall rule
  • New-NetFirewallRule: Creates a firewall rule

For detailed command syntax and usage, refer to the Get-NetFirewallRule and New-NetFirewallRule cmdlets.

How to Create a Firewall Rule

To create a new firewall rule, you can use the following command:

New-NetFirewallRule -DisplayName "My Example Rule" -Direction Inbound -Program "C:\\Temp\\MyApp.exe" -Action Allow -Profile Domain,Private -Protocol TCP -LocalPort 8080

screen shot showing how to create a new firewall

Image courtesy of ITPro Today

You can verify the creation of the rule using:

Get-NetFirewallRule -DisplayName "My Example Rule"

How to Modify a Firewall Rule

To modify an existing firewall rule, use the following command:

Set-NetFirewallRule -DisplayName "My Example Rule" -Profile Domain

screenshot showing modification of firewall rule

Image courtesy of ITPro Today

How to Delete a Firewall Rule

To delete a firewall rule, use the command:

Remove-NetFirewallRule -DisplayName "My Example Rule"

screenshot showing how to delete a firewall rule

Image courtesy of ITPro Today

By utilizing these commands and techniques, you can effectively manage Windows firewall rules using PowerShell.

For more information and to explore our services, visit Gopher Security.

Edward Zhou
Edward Zhou

CEO & Co-Founder

 

CEO & Co-Founder of Gopher Security, leading the development of Post-Quantum cybersecurity technologies and solutions.

Related News

Instagram Vulnerability Exposes Private Data of Millions
Instagram security

Instagram Vulnerability Exposes Private Data of Millions

Instagram's private posts exposed, millions affected by data breaches, and new location features pose risks. Discover how Gopher Security's AI-powered Zero-Trust architecture protects your data. Learn more!

By Brandon Woo January 27, 2026 4 min read
common.read_full_article
Closing the Cloud Complexity Gap: Insights from 2026 Security Reports
cloud security

Closing the Cloud Complexity Gap: Insights from 2026 Security Reports

Navigate the escalating complexity of cloud security. Discover how AI, Zero-Trust, and unified ecosystems are essential to combatting modern threats. Learn more!

By Divyansh Ingle January 26, 2026 6 min read
common.read_full_article
AI-Driven Cybersecurity Innovations: The Future of Threat Prevention
AI agents security

AI-Driven Cybersecurity Innovations: The Future of Threat Prevention

AI agents are prime targets for cyberattacks. Discover evolving threats like prompt injection & AI-powered exploits, and learn how to fortify your defenses. Read now!

By Brandon Woo January 22, 2026 5 min read
common.read_full_article
GootLoader Malware Evades Detection Using Nested ZIP Archives
GootLoader

GootLoader Malware Evades Detection Using Nested ZIP Archives

GootLoader is back with advanced tricks, using malformed ZIPs to bypass security & target businesses. Learn how to detect and defend against this threat. Protect your assets!

By Edward Zhou January 21, 2026 3 min read
common.read_full_article