You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core应用与PowerShell 7执行策略不一致问题排查

问题原因
  1. PowerShell版本策略存储路径不匹配:PowerShell 7的LocalMachine级执行策略存储在HKLM:\SOFTWARE\Microsoft\PowerShell\7\ShellIds\Microsoft.PowerShell注册表项中,而你的.NET Core应用可能默认读取了Windows PowerShell(5.1)的策略路径(HKLM:\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell),导致识别不到PowerShell 7设置的策略。
  2. 权限不足:如果.NET Core应用以非管理员权限运行,读取LocalMachine级别的注册表项会受限,返回Undefined。
  3. 策略 fallback 导致模块加载失败:当机器级策略未被正确识别时,PowerShell会使用更严格的默认策略,阻止加载DISM模块,引发Get-WindowsCapability的报错。
机器级执行策略的其他设置方式
  • 直接编辑注册表(需管理员权限):
    打开注册表编辑器,根据应用位数选择对应路径:
    • 64位应用:定位到HKLM:\SOFTWARE\Microsoft\PowerShell\7\ShellIds\Microsoft.PowerShell
    • 32位应用:定位到HKLM:\SOFTWARE\Wow6432Node\Microsoft\PowerShell\7\ShellIds\Microsoft.PowerShell
      新建或修改字符串值ExecutionPolicy,设置为Unrestricted(或RemoteSigned等符合需求的策略)。
  • 组策略配置(适用于企业/域环境):
    打开组策略编辑器(gpedit.msc),导航到计算机配置 > 管理模板 > Windows组件 > Windows PowerShell,启用「打开脚本执行」策略,设置允许的执行规则。该设置会覆盖注册表策略,对所有PowerShell实例生效。
  • 验证.NET Core依赖的PowerShell版本:
    确保项目引用的System.Management.Automation版本(7.3.3.0)与本地安装的PowerShell 7版本完全一致,且应用运行时指向PowerShell 7的安装目录,避免误加载Windows PowerShell 5.1的环境。

内容的提问来源于stack exchange,提问作者JohnB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:22:13