C#中的PowerShell:无法加载DLL wldp.dll

时间:2015-09-28 18:55:24

标签: c# powershell

尝试在C#中运行以下内容时出错。

错误是:

  

异常:抛出无法加载DLL wldp.dll

PowerShell ps = PowerShell.Create();
ps.AddCommand("Get-BrokerSession");
ps.AddParameter("AdminAddress");
ps.AddParameter("MYSERVERNAMEHERE");
Collection<PSObject> psr = ps.Invoke();

它还说Get-BrokerSession不是公认的命令,但我可以在PS命令提示符下使用它而不会出现问题。

2 个答案:

答案 0 :(得分:1)

可能需要加载Citrix特定的PowerShell模块。如果您的PS版本是3.0。 这应该解决错误: Get-BrokerSession不是公认的命令
然后你可以进入下一步。

InitialSessionState initial = InitialSessionState.CreateDefault();
initial.ImportPSModule(new string[] { @"C:\Temp\PSModule.psm1" });  // + Include in your PSModule.psm1: function ImportCitrixModule { Asnp Citrix* }
Runspace runspace = RunspaceFactory.CreateRunspace(initial);
initial.ThrowOnRunspaceOpenError = true;
runspace.Open();
RunspaceInvoke runSpaceInvoker = new  RunspaceInvoke(runspace); 
runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");

PowerShell ps = PowerShell.Create();
ps.Runspace = runspace;
ps.AddCommand("ImportCitrixModule"); // +
Collection<PSObject> psr = ps.Invoke();

答案 1 :(得分:0)

根据this blog post,可以帮助检查项目构建设置中的首选32位。

尝试通过UnitTest项目中的C#Powershell启动可执行文件时遇到此错误。你不能为UnitTest项目选择这个选项(所以它没有帮助我),但运行我的测试而不调试它按预期工作。我最终没有UnitTest / IntegrationTest ......