2015-09-28 113 views
0

我嘗試在C#中運行以下代碼時出現錯誤。C#中的PowerShell:無法加載DLL wldp.dll

的錯誤是:

Exception:Thrown Unable to load 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命令提示符下使用這個沒有問題。

回答

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

不幸運行。它嘗試加載所有這些模塊時會遇到太多錯誤。我發現令人沮喪的是,我無法將它們加載到我正在運行該應用程序的服務器上,並使其從代碼中運行。我可以在PowerShell命令行中找到沒有錯誤的模塊,我可以運行該命令並且它可以工作,但是當我從C#運行它時它不會執行它。 –

+0

我已經更新了代碼,只是爲了檢查導入模塊部分。我沒有在我的電腦上安裝Citirix PS模塊,所以請嘗試,如果這有幫助。 – yantaq

0

根據this blog post它可以幫助檢查項目構建設置中的首選32位。

我嘗試通過C#Powershell在UnitTest項目中啓動可執行文件時遇到此錯誤。你不能爲UnitTest項目選擇這個選項(所以它沒有幫助我),但是在沒有調試的情況下運行我的測試就可以按預期工作。我結束了沒有一個UnitTest/IntegrationTest ...