尝试在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命令提示符下使用它而没有问题。
可能是您必须加载特定于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();
根据this blog post,它可以帮助检查项目构建设置中的Prefer 32位。
尝试通过UnitTest项目中的C#Powershell启动可执行文件时遇到此错误。你不能为UnitTest项目选择这个选项(所以它没有帮助我),但运行我的测试而不调试它按预期工作。我最终没有UnitTest / IntegrationTest ......