本文介绍了加快Powershell的remove-netfirewallrule的速度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要使用Powershell在Windows 10中删除许多与Metro应用程序相关的防火墙规则.与netsh或regedit相比,它看起来非常慢.反正要加快速度吗?

I need to remove a lot of metro app related firewall rules in Windows 10 with powershell. It seems very slow compared to netsh or regedit. Anyway to speed it up?

# clean firewall rules, deleting profile doesn't get rid of them

# string (sid) 45 in length, no existing profiles
# 9000 rules take about 90 minutes to delete    

$profiles = get-wmiobject -class win32_userprofile

# I'm only dumping to a file to convert pscustomobject to string for sort
get-netfirewallrule -all | select-object -property owner > out

$list = get-content out | sort-object | get-unique | where-object { $_.trim().length -eq 45  -and $profiles.sid -notcontains $_ }

foreach($i in $list) {$i 
  remove-netfirewallrule -owner $i}

# about 65 rules per user here
echo ConfigurableServiceStore
get-netfirewallrule -all -policystore configurableservicestore | select-object -property owner > out

$list = get-content out | sort-object | get-unique | where-object { $_.trim().length -eq 45  -and $profiles.sid -notcontains $_ }

foreach($i in $list) {$i 
  remove-netfirewallrule -policystore configurableservicestore -owner $i}

推荐答案

编辑:我已将选择对象-财产所有者更新为选择对象-ExpandProperty Owner 这样, $ _ 仅包含Owner属性:

EDIT: I've updated Select-Object -Property Owner to Select-Object -ExpandProperty Owner this way $_ contains only the Owner property:

$SID = (get-wmiobject -class win32_userprofile).SID

Write-Host "Getting Firewall Rules"
$Rules = Get-NetFirewallRule -All | Select-Object -ExpandProperty Owner -Unique | Where-Object { $SID -notcontains $_ }

Write-Host "Getting Firewall Rules from ConfigurableServiceStore Store"
$ConfigurableServiceStore = Get-NetFirewallRule -All -PolicyStore ConfigurableServiceStore | Select-Object -ExpandProperty Owner -Unique | Where-Object { $SID -notcontains $_ }

Write-Host "Deleting Firewall Rules:" -ForegroundColor Green
foreach($Owner in $Rules) {
    Write-Host "Deleting Rules with Owner: $Owner"
    Remove-NetFirewallRule -Owner $Owner
}

Write-Host "Deleting Firewall Rules from ConfigurableServiceStore Store:" -ForegroundColor Green
foreach($Rule in $ConfigurableServiceStore) {
    Write-Host "Deleting Rules with Owner: $Owner"
    Remove-NetFirewallRule -PolicyStore ConfigurableServiceStore -Owner $Owner
}

这篇关于加快Powershell的remove-netfirewallrule的速度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 22:04