Setup: Computer with PowerShell installed
Problem: You need to check the firewall status from a script, for a local or a remote server.
Solution:
filter global:get-firewallstatus ([string]$computer = $env:computername) { if ($_) { $computer = $_ } $HKLM = 2147483650 $reg = get-wmiobject -list -namespace root\default -computer $computer | where-object { $_.name -eq "StdRegProv" } $firewallEnabled = $reg.GetDwordValue($HKLM, "System\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile","EnableFirewall") [bool]($firewallEnabled.uValue) } get-firewallstatus [<computername>]
Tip 1: Use Run As to open a PowerShell session with an administrative user
Tip 2: Get status for all computer from AD with
Get-QADComputer | select-object -property @{n='Name';e={$_.name}},@{n='FirewallStatus';e={get-firewallstatus $_.name}}