Public/Get-FirewallInfo.ps1
Function Get-FirewallInfo { <# .SYNOPSIS Retrieves Windows Firewall configuration and rules. .DESCRIPTION This function collects Windows Firewall profile settings and firewall rules, providing comprehensive firewall configuration information. .PARAMETER IncludeRules If specified, includes detailed firewall rules in addition to profile information. .INPUTS None. This function does not accept pipeline input. .OUTPUTS System.Collections.Hashtable Returns a hashtable containing firewall profiles and optionally rules information. .EXAMPLE PS> Get-FirewallInfo Retrieves firewall profile information only. .EXAMPLE PS> Get-FirewallInfo -IncludeRules Retrieves firewall profiles and all firewall rules. .NOTES This function requires administrator privileges to access firewall configuration. The NetSecurity PowerShell module must be available on the system. #> [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [switch]$IncludeRules ) Begin { Write-Verbose "[BEGIN]: Get-FirewallInfo" $FirewallInfo = @{ Profiles = @() Rules = @() } } Process { Write-Verbose "[PROCESS]: Get-FirewallInfo" try { Write-Verbose "Retrieving firewall profiles..." $FirewallInfo.Profiles = Get-NetFirewallProfile | Select-Object Name, Enabled, DefaultInboundAction, DefaultOutboundAction, LogAllowed, LogBlocked, LogFileName if ($IncludeRules) { Write-Verbose "Retrieving firewall rules..." $FirewallInfo.Rules = Get-NetFirewallRule | Select-Object DisplayName, Description, DisplayGroup, Action, Direction, Enabled, Profile } } catch { Write-Error "Failed to retrieve firewall information: $_" } } End { Write-Verbose "[END]: Get-FirewallInfo" Write-Verbose "Firewall profiles found: $($FirewallInfo.Profiles.Count)" if ($IncludeRules) { Write-Verbose "Firewall rules found: $($FirewallInfo.Rules.Count)" } Write-Verbose "Get-FirewallInfo completed." return $FirewallInfo } } |