O motivo pelo qual você não pode obter os mesmos resultados usando os mesmos comandos é que as regras de firewall do Win7 podem ser específicas para um aplicativo individual e configuradas por tipo de rede (Particular, Domínio, Público), protocolo, porta etc. O Powershell deve dar a você uma maneira muito melhor de consultar essas informações e classificá-las. Aqui está um script rápido que eu tenho que despejar minha configuração, quando eu precisar.
Function Get-EnabledRules
{
Param($profile)
$rules = (New-Object -comObject HNetCfg.FwPolicy2).rules
$rules = $rules | where-object {$_.Enabled -eq $true}
$rules = $rules | where-object {$_.Profiles -bAND $profile}
$rules
}
$networkListManager = [Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}"))
$connections = $networkListManager.GetNetworkConnections()
[int[] ] $connTypes = @()
$connTypes = ($connections | % {$_.GetNetwork().GetCategory()})
#$connTypes += 1
Write-Host $connTypes
$connTypes | ForEach-Object {Get-EnabledRules -profile $_ | sort localports,Protocol | format-table -wrap -autosize -property Name, @{Label="Action"; expression={$_.action}}, @{Label="Protocol"; expression={$_.protocol}}, localPorts,applicationname}
Muito disso foi baseado em este post no MSDN