PS C:\Users\Admin> New-NetFirewallRule -DisplayName "Allow SMB 138" -Protocol UDP -LocalPort 138 -Action Allow New-NetFirewallRule : 拒绝访问。 所在位置 行:1 字符: 1 + New-NetFirewallRule -DisplayName "Allow SMB 138" -Protocol UDP -Local ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : PermissionDenied: (MSFT_NetFirewallRule:root/standardcimv2/MSFT_NetFirewallRule) [New-Ne tFirewallRule], CimException + FullyQualifiedErrorId : Windows System Error 5,New-NetFirewallRule
时间: 2025-03-12 09:14:19 浏览: 47
<think>好的,我现在需要帮助用户解决在PowerShell中使用New-NetFirewallRule时遇到的权限拒绝问题,错误是Windows System Error 5。首先,我应该回忆一下Windows中的权限问题通常是什么原因导致的。错误5通常意味着没有足够的权限,所以用户可能需要以管理员身份运行PowerShell。
接下来,用户提到的是创建防火墙规则,而防火墙规则修改通常需要管理员权限。我应该先确认用户是否以管理员身份启动了PowerShell。可能需要右键点击PowerShell图标,然后选择“以管理员身份运行”。
然后,检查用户账户的权限。即使用户是管理员,某些情况下可能需要显式提升权限。另外,组策略可能限制了对防火墙规则的修改,特别是在企业环境中。可能需要检查本地组策略编辑器(gpedit.msc)中的相关设置,比如“网络列表管理器策略”或者“Windows防火墙”设置。
另外,安全软件有时候会阻止防火墙规则的更改,比如第三方杀毒软件或防火墙本身。建议用户暂时禁用这些软件试试看。如果问题解决,就需要调整这些软件的设置。
还有,命令语法是否正确?虽然用户可能已经检查过,但再次确认参数是否正确,比如-DisplayName、-Direction、-Action等是否正确拼写和参数值是否有效。
最后,如果以上方法都无效,可能需要使用其他方法来创建规则,比如通过图形界面的防火墙设置,或者使用netsh命令,或者检查系统日志获取更详细的错误信息。
现在,需要将这些步骤整理成结构清晰的建议,确保用户能够逐步排查问题。同时,根据提供的引用,引用中的例子提到需要管理员权限运行PowerShell,比如引用2和3中的操作都需要管理员权限,所以应该强调这一点。引用3中给出的命令示例New-NetFirewallRule,用户可能没有以管理员身份运行导致权限问题。
可能需要分步骤说明,首先检查管理员权限,然后检查账户权限、组策略、安全软件干扰,再检查命令语法,最后提供替代方法。这样用户能够一步步排查,找到问题所在。
还要注意使用中文回答,符合格式要求,行内数学公式用$...$,独立公式用$$...$$,但在这个问题中可能不需要数学公式。不过需要确保LaTeX语法正确,如果有的话。但当前问题可能不涉及数学公式,所以可能不需要使用。
生成相关问题部分,需要考虑用户可能的后续问题,比如如何检查组策略设置,如何用netsh创建防火墙规则,或者如何查看系统日志等。
最后,引用部分需要正确标注,根据用户提供的引用,引用3提到了使用New-NetFirewallRule的例子,所以可以在建议以管理员权限运行时引用这个例子。引用2提到在管理员权限的PowerShell窗口中执行代码,所以也可以引用到这里。</think>针对PowerShell中创建防火墙规则时出现的权限拒绝问题(Windows System Error 5),以下是分步解决方案:
---
### **1. 以管理员身份运行PowerShell**
- **操作步骤**:右键点击PowerShell图标,选择“以管理员身份运行”,确保窗口标题栏显示`管理员`字样。
- **原因**:`New-NetFirewallRule`需要管理员权限,普通模式无法修改系统级防火墙配置[^3]。
---
### **2. 验证用户账户权限**
- **检查项**:
- 账户需属于`Administrators`组(通过`net localgroup Administrators`命令验证)。
- 若在域环境中,需联系IT部门确认是否被组策略限制(如`计算机配置→Windows设置→安全设置→本地策略→用户权限分配`)[^1]。
---
### **3. 检查组策略限制**
- **操作**:
1. 运行`gpedit.msc`打开本地组策略编辑器。
2. 导航至`计算机配置→管理模板→网络→网络连接→Windows Defender 防火墙`。
3. 确认未启用`阻止所有入站/出站连接`或类似限制性策略。
---
### **4. 禁用第三方安全软件**
- **临时测试**:关闭杀毒软件/防火墙(如360、火绒等),再尝试执行命令。
- **若成功**:需在安全软件中添加例外规则。
---
### **5. 检查命令语法**
- **示例正确语法**:
```powershell
New-NetFirewallRule -DisplayName "Allow Port 80" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
```
- **常见错误**:
- 缺少必填参数(如`-Direction`或`-Action`)。
- 参数值格式错误(如端口号未用数字)。
---
### **6. 替代方案:使用图形界面创建规则**
- **操作路径**:
`控制面板→系统和安全→Windows Defender 防火墙→高级设置→入站/出站规则→新建规则`。
- **适用场景**:命令语法不确定或组策略严格限制时。
---
### **7. 查看系统日志定位错误**
- **步骤**:
1. 打开`事件查看器`(运行`eventvwr.msc`)。
2. 导航至`Windows日志→应用程序`,筛选`事件源`为`Microsoft-Windows-Security-Firewall`。
3. 根据日志中的错误代码进一步排查。
---
### **引用关键操作示例**
若需通过脚本批量创建规则,需确保脚本在管理员会话中运行[^2]:
```powershell
# 以管理员身份启动PowerShell后执行
$ruleParams = @{
DisplayName = "Allow SSH"
Direction = "Inbound"
Protocol = "TCP"
LocalPort = 22
Action = "Allow"
}
New-NetFirewallRule @ruleParams
```
---
阅读全文
相关推荐


















