如何使用C#Runspace加载powershell模块

时间:2012-06-06 00:48:59

标签: c# powershell azure

尝试在C#中使用Azure cmdlet,除了特定的“Get-RoleInstanceCount”(Azure)之外,一切正常。 Azure cmdlet promt在启动时运行以下命令:

C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command "cd c:\; Import-Module 'C:\Users\me\Documents\WindowsPowerShell\Modules\WAPPSCmdlets\WAPPSCmdlets.dll'"

我尝试了以下内容:

InitialSessionState initialSessionState = InitialSessionState.CreateDefault();
initialSessionState.ImportPSModule(new string[] {"C:\\Users\\me\\Documents\\WindowsPowerShell\\Modules\\WAPPSCmdlets\\WAPPSCmdlets.dll"});
Runspace runspace = RunspaceFactory.CreateRunspace(initialSessionState);

他们也喜欢这样做:

http://msdn.microsoft.com/en-us/library/windows/desktop/ee706596(v=vs.85).aspx

.dll模块位于Debug文件夹和上面的路径中。但是当我尝试“打开()”运行空间时,我得到以下异常:

  

无法加载文件或程序集“WAPPSCmdlets”或其中一个   依赖。定位程序集的清单定义没有   匹配程序集引用。 (HRESULT异常:0x80131040)

我能做什么才能加载使我能够运行Azure命令的模块?

1 个答案:

答案 0 :(得分:0)

由于无法成功加载cmdlet,因此我不确定“Get-RoleInstanceCount”以外的命令是如何工作的。你能再次检查以确保它们正常工作吗?如果没有,请尝试重新安装cmdlet。

此外,您可以直接使用RESTful Windows Azure Management API而无需PowerShell。 PowerShell可以通过将HTTP请求封装到cmdlet中来提供简化的编程模型。但如果这不起作用,您始终可以选择直接使用REST API。