2015-12-30 108 views
0

我使用“System.Management.Automation.dll”从C#代码执行PowerShell命令。但我无法执行服务结构命令。如何从c#执行Service Fabric Powershell命令?

当我执行服务织物命令我碰到下面的错误

指定的模块“ServiceFabric”没有被加载,因为没有有效的 模块文件在任何模块目录

术语'发现Connect-ServiceFabricCluster'不被识别为cmdlet,函数,脚本文件或可操作程序的名称 。检查名称的拼写,或者如果包含路径,请确认路径 是正确的,然后重试。

我使用的代码是

var shell = PowerShell.Create(); 
shell.Commands.AddScript("Import-Module ServiceFabric"); 
shell.Commands.AddScript("Connect-ServiceFabricCluster"); 
var result = shell.Invoke(); 

,当我直接从PowerShell命令窗口中执行他们这些命令的成功合作。

上面的代码工作正常,其他PowerShell命令

我也尝试过使用物理路径 加载模块 “C:\ WINDOWS \ SYSTEM32 \ WindowsPowerShell \ V1.0 \模块\ ServiceFabric” 这没”不管工作。

+1

你的进程与OS有相同的位数? – PetSerAl

+1

将应用程序更改为64位,并且工作。 –

回答

1

你为什么试图从C#调用powershell命令?所有的powershell命令都与API具有同等的含义 - 对于每个命令,都有一个可以直接使用的API。只需创建一个FabricClient并调用您需要的任何方法即可。

+0

我为FabricClient安装了nuget包,有没有关于如何使用这个库的文档? msdn中有引用,但不是最新的。 –

+0

在为FabricCliet添加Nuget之后。我写了下面的代码System.Fabric.FabricClient client = new System.Fabric.FabricClient(“http:// localhost:19080”); var x = await client.QueryManager.GetApplicationListAsync();此语句抛出异常{“提供的地址无效。”} \t System.Exception {System.Fabric.FabricInvalidAddressException} –

+0

您是否尝试过使用本地FabricClient(不通过网关地址)? [本地FabricClient超载](http://msdn.microsoft.com/library/azure/mt161330.aspx)。 –