【问题标题】:How to open ports on Windows firewall through batch file如何通过批处理文件打开 Windows 防火墙上的端口
【发布时间】:2013-02-16 18:03:28
【问题描述】:

批处理文件中是否有任何方法可以通过批处理文件打开 Windows 上的特定端口?最好让安装程序为我们的服务器应用程序执行此操作,而不是让用户手动执行此操作。

【问题讨论】:

    标签: windows batch-file cmd port firewall


    【解决方案1】:

    使用netsh.exe。一个非常简单的带有端口参数的批处理文件:

    @echo off
    rem -- open port (first argument passed to batch script)
    netsh advfirewall firewall add rule name="Open Port %1" dir=in action=allow protocol=TCP localport=%1 remoteip=10.15.97.0/24,10.17.0.0/16
    

    【讨论】:

    • 请注意,启动 netsh 的进程(或启动 netsh 的任何程序,例如您的批处理文件)需要管理员权限才能进行端口异常。您的安装程序通常可以在安装时处理此问题,具体取决于安装程序是否以管理员权限运行。
    【解决方案2】:

    这是@Kevin Richardson 提供的解决方案的扩展。 请注意,每次运行相同的命令时,“netsh advfirewall add rule”命令都会创建一个具有相同名称的新规则。下面的脚本有助于防止它

    ECHO OFF
    set PORT=8081
    set RULE_NAME="Open Port %PORT%"
    
    netsh advfirewall firewall show rule name=%RULE_NAME% >nul
    if not ERRORLEVEL 1 (
        rem Rule %RULE_NAME% already exists.
        echo Hey, you already got a out rule by that name, you cannot put another one in!
    ) else (
        echo Rule %RULE_NAME% does not exist. Creating...
        netsh advfirewall firewall add rule name=%RULE_NAME% dir=in action=allow protocol=TCP localport=%PORT%
    )
    

    【讨论】:

    • 我已经尝试过您的解决方案(但在回声中将 %RULENAME% 替换为 %RULE_NAME%...),它按预期工作,谢谢!
    • 谢谢,这很有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2019-12-22
    • 2014-09-03
    • 2019-08-21
    • 2016-06-06
    • 2015-06-17
    • 1970-01-01
    相关资源
    最近更新 更多