找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14564|回复: 3

[问题求助] win7下使用powershell添加防火墙规则

[复制链接]
发表于 2022-2-27 10:10:35 | 显示全部楼层 |阅读模式
在win10下有powershell添加防火墙规则的命令  New-NetFirewallRule

在win7没有, 但我想在win7下用powershll来添加一个简单的防火墙阻止规则, 即, 禁止 火狐浏览器访问互联网 ,就是把这个文件加到防火墙里就了 "C:\Program Files\Mozilla Firefox\firefox.exe" 请求高手支招, 提前感谢!!!

搜索到了下面的代码供参考,它可避免增加重复的防火墙规则

平时, 我是使用下面的一款小工具实现上面的功能的, 但是要下载它, 感觉不方便
https://www.sordum.org/9470/windows-update-blocker-v1-7/

  1. $RULENAME1 = 'Domain Controllers'
  2. $Rule = netsh advfirewall firewall show rule name="$RULENAME1" $nul

  3. if ("$Rule" -notmatch "No rules match") {

  4. echo "Rule "$RULENAME1" already exist."
  5. echo "Hey, you already got a out rule by that name, you cannot put another one in!"

  6. } else {
  7. echo Rule "$RULENAME1" not exist. Creating...
  8. netsh advfirewall firewall add rule name="$RULENAME1" dir=in action=allow remoteip=10.10.10.10
  9. }
复制代码
发表于 2022-2-27 16:17:43 | 显示全部楼层
netsh advfirewall firewall add rule ?
  1. $RULENAME1 = 'Domain Controllers'
  2. $Rule = netsh advfirewall firewall show rule name="$RULENAME1" $nul

  3. if ($?) {

  4. echo "Rule "$RULENAME1" already exist."
  5. echo "Hey, you already got a out rule by that name, you cannot put another one in!"

  6. } else {
  7. echo Rule "$RULENAME1" not exist. Creating...
  8. netsh advfirewall firewall add rule name="$RULENAME1" dir=out action=block program="C:\Program Files\Mozilla Firefox\firefox.exe"
  9. }
复制代码
 楼主| 发表于 2022-2-27 19:11:03 | 显示全部楼层
回复 2# idwma


    感谢大侠帮忙, 刚刚执行试了一下, 显示如下提示, 最后有 确定 2字, 我去防火墙规则看了一下,

出站里面有那个规则名称了, 但是没有出现在 Firewall App Blocker 这个小软件的列表里, 对比了一下, 发现使用这个小工具阻止exe程序后, 实际是在出站和入站里面全部都设置了禁止规则, 则规则名称就是软件的名字, 我估计出站和入站规则都添加后, 应该就出现在  Firewall App Blocker 这个小软件的列表里了

问题来了:
怎样在现在的基础上添加 禁止入站  规则,  
把 dir=out 改为 dir=in ? 能不能在一句里同时设置?

怎样从路径中取程序名? 我用下面的方法, 会有扩展名
$path = "C:\Program Files (x86)\EdrawSoft\MindMaster\MindMaster.exe"
Split-Path $path -Leaf
发表于 2022-2-27 20:02:17 | 显示全部楼层
回复 3# 5i365
  1. 'in','out'|%{netsh advfirewall firewall add rule name="$RULENAME1" dir=$_ action=block program="C:\Program Files\Mozilla Firefox\firefox.exe"}
  2.     (gi "C:\Program Files (x86)\EdrawSoft\MindMaster\MindMaster.exe").basename
复制代码

评分

参与人数 1技术 +1 收起 理由
5i365 + 1 乐于助人, 技术牛X

查看全部评分

 楼主| 发表于 2022-2-27 21:12:31 | 显示全部楼层
回复 4# idwma


    感谢大侠帮忙完善, 贴出完善后的代码, 供坛友参考:
  1. $pp = "C:\Program Files\Mozilla Firefox\firefox.exe"

  2. $Rule_name = $((gi $pp).basename)
  3. $Rule = netsh advfirewall firewall show rule name="$Rule_name" $nul

  4. if ($?)
  5. {
  6.         echo "$Rule_name 规则已存在"
  7. }
  8. else
  9. {
  10.         echo "$Rule_name 规则不存在, 创建中..."
  11.         'in', 'out' | foreach{ netsh advfirewall firewall add rule name="$Rule_name" dir=$_ action=block program=$pp }
  12. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:51 , Processed in 0.012066 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表