本文介绍了加快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的速度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!