如何通过PowerShell调用本地组策略阻断TCP端口445、139?
错误原因说明
Open-NetGPO是专门用于操作域内存储在活动目录中的组策略对象的cmdlet,不支持直接访问本地组策略存储,传入计算机名、本地策略路径都会触发参数错误Open-NetGPOGroup不属于Windows官方NetSecurity模块的合法cmdlet,属于无效命令- 本地组策略中的防火墙规则有专用的存储路径,无需调用NetGPO相关接口即可操作
可行解决方案
方案1:单台设备配置本地组策略防火墙规则
直接指定本地组策略的防火墙存储路径localhost\GP即可写入规则,无需创建GPO会话,需以管理员权限运行PowerShell:
New-NetFirewallRule -PolicyStore localhost\GP ` -DisplayName "阻断出站TCP 445、139端口" ` -Direction Outbound ` -Protocol TCP ` -LocalPort 445,139 ` -Action Block ` -Profile Domain,Private,Public ` -Enabled True
执行完成后运行gpupdate /force刷新组策略即可生效,可手动打开本地组策略编辑器确认规则是否存在。
方案2:域内批量部署(域控侧操作)
如果需要给多台域内设备统一配置,可直接在域控上操作目标域GPO,无需逐台设备操作,需以域管理员权限在域控上运行:
# 替换尖括号内容为实际的域名、目标GPO名称 $gpoSession = Open-NetGPO -PolicyStore "<你的域名>\<目标GPO名称>" New-NetFirewallRule -GPOSession $gpoSession ` -DisplayName "阻断出站TCP 445、139端口" ` -Direction Outbound ` -Protocol TCP ` -LocalPort 445,139 ` -Action Block ` -Profile Domain,Private,Public ` -Enabled True # 保存GPO修改 Save-NetGPO -GPOSession $gpoSession
将该GPO关联到对应的OU后,域内设备刷新组策略即可自动应用规则。
配置验证
执行以下命令可检查本地组策略中的规则是否配置正确:
Get-NetFirewallRule -PolicyStore localhost\GP -DisplayName "阻断出站TCP 445、139端口" | Select-Object DisplayName,Direction,Action,Enabled
内容的提问来源于stack exchange,提问作者Tanya H
相关产品推荐
相关产品推荐

