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

调用PowerShell操作AD时System.Management.Automation.dll加载异常求助

问题:.NET调用PowerShell添加AD用户时触发System.TypeInitializationException,提示找不到已存在的System.Management.Automation.dll

问题详情

内网新用户注册后台通过PowerShell脚本将用户添加至Active Directory,该功能此前长期正常运行,7月5日至21日期间突然失效。调试时触发System.TypeInitializationException异常,内部异常提示找不到路径C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll,但该文件实际存在,报错发生在ps.Invoke()执行阶段。

运行环境

  • 操作系统:Windows 11
  • 项目目标框架:.NET 4.8
  • PowerShell版本:5.1.22621.1778

已尝试操作

重装PowerShell、Visual Studio,替换上述路径下的DLL文件,问题仍未解决。

相关代码片段

PowerShell ps;

ps = PowerShell.Create();

ps.AddScript(script: @"import-module ActiveDirectory");

try
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    ps.Invoke();
}
catch (Exception er)
{
    lblStatusMsg5.Visible = true;
    lblStatusMsg5.Text = "Something went wrong!";
    return er.Message.ToString(); ;
}

解决方案

1. 检查进程权限

  • 确认运行程序的进程(如IIS应用池账户、桌面程序运行账户)拥有读取GAC目标路径的权限,可临时以管理员身份运行程序测试是否为权限问题。

2. 修复GAC程序集缓存

以管理员身份打开命令提示符,执行以下命令:

# 重新注册目标DLL到GAC
gacutil /i "C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0__31bf3856ad364e35\System.Management.Automation.dll"

# 更新本机映像缓存
ngen.exe update

3. 调整PowerShell初始化逻辑

尝试显式创建运行空间,避免加载上下文冲突:

var runspace = RunspaceFactory.CreateRunspace();
runspace.Open();
PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddScript(@"import-module ActiveDirectory");

try
{
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    ps.Invoke();
}
catch (Exception er)
{
    lblStatusMsg5.Visible = true;
    lblStatusMsg5.Text = "Something went wrong!";
    return er.Message.ToString();
}
finally
{
    runspace.Close();
}

4. 排查系统更新影响

  • 查看Windows 11在7月5日至21日期间安装的更新,卸载可疑的.NET Framework或PowerShell相关更新,测试功能是否恢复。
  • 安装最新的.NET Framework 4.8累积更新,修复组件完整性问题。

5. 启用程序集绑定日志定位根因

  1. 以管理员身份运行FUSLOGVW.exe(程序集绑定日志查看器)
  2. 点击「设置」,选择「记录所有绑定失败到磁盘」
  3. 运行报错程序,查看生成的日志,明确程序集加载失败的具体原因(如版本冲突、依赖缺失)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 04:40:10