返回

轻松启用 Windows Defender 高级网络访问设置,提升应用程序安全性

windows

使用 PowerShell 轻松启用 Windows Defender 中的高级网络访问设置

在网络安全的世界里,管理应用程序对不同网络的访问至关重要。Windows Defender 提供了高级设置,允许你自定义应用程序在公共和专用网络上的通信方式。然而,手动配置这些设置可能会很繁琐。使用 PowerShell,你可以自动化此过程,为你节省时间和精力。

准备工作

在开始之前,你需要确保:

  • 具有管理员权限。
  • 安装了最新版本的 Windows Defender。
  • 导入必要的 PowerShell 模块:
Import-Module NetSecurity

获取应用程序列表

首先,使用 Get-AppxPackage 命令获取已安装应用程序的列表:

$apps = Get-AppxPackage | Where-Object {$_.PublisherId -ne "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"}

此命令将返回一个应用程序对象的数组,其中排除 Microsoft 应用程序。

创建防火墙规则

接下来,为每个应用程序创建入站和出站防火墙规则,允许其在公共和专用网络上进行通信:

foreach ($app in $apps) {
    $ruleName = "$($app.Name) Inbound"
    New-NetFirewallRule -Name $ruleName -DisplayName "$($app.Name) Inbound Rule" -Direction Inbound -Profile Any -Action Allow -Program "$($app.InstallLocation)\$($app.MainApplication)"
    $ruleName = "$($app.Name) Outbound"
    New-NetFirewallRule -Name $ruleName -DisplayName "$($app.Name) Outbound Rule" -Direction Outbound -Profile Any -Action Allow -Program "$($app.InstallLocation)\$($app.MainApplication)"
}

验证规则

使用 Get-NetFirewallRule 命令验证是否创建了防火墙规则:

Get-NetFirewallRule -Name * | Where-Object {$_.Program -match ".*$($app.MainApplication)"}

启用高级设置

最后,启用应用程序的“公共”和“专用”网络访问高级设置:

foreach ($app in $apps) {
    Set-NetFirewallProfile -Name "Public" -Enabled True -DisplayName "$($app.Name) Public Network Access" -AllowInbound "$($app.Name) Inbound" -AllowOutbound "$($app.Name) Outbound"
    Set-NetFirewallProfile -Name "Private" -Enabled True -DisplayName "$($app.Name) Private Network Access" -AllowInbound "$($app.Name) Inbound" -AllowOutbound "$($app.Name) Outbound"
}

验证设置

转到“Windows 设置”>“更新和安全”>“Windows 安全中心”>“防火墙和网络保护”,查看每个应用程序的“公共”和“专用”网络访问设置是否已启用。

常见问题解答

  • 问:我可以选择性启用应用程序的网络访问吗?
    • 答: 是的,你可以使用 -Enabled False 参数来禁用特定应用程序的设置。
  • 问:如果应用程序的安装位置或主应用程序名称发生更改怎么办?
    • 答: 你需要手动更新相应的防火墙规则。
  • 问:此脚本是否会覆盖现有防火墙规则?
    • 答: 不会,它只会创建新的规则。
  • 问:我可以在不同类型的网络上设置不同的访问设置吗?
    • 答: 是的,你可以使用 -Profile 参数指定特定的网络配置文件。
  • 问:是否存在一种方法可以批量启用或禁用所有应用程序的设置?
    • 答: 是的,你可以使用 Get-NetFirewallProfileSet-NetFirewallProfile 命令来批量管理设置。

结论

使用 PowerShell 启用高级网络访问设置是一种高效且方便的方式,可以增强应用程序的安全性,同时确保它们能够在不同网络环境中正常运行。通过遵循这些步骤,你可以轻松自动化此过程,节省大量时间和精力。