[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

在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. }
复制代码

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. }
复制代码

TOP

回复 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

TOP

回复 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

评分人数

    • 5i365: 乐于助人, 技术牛X技术 + 1

TOP

回复 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. }
复制代码

TOP

返回列表