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

问题描述 投票:0回答:2

尝试在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命令提示符下使用它而没有问题。

c# powershell
2个回答
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();

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.