无法调用System.Management.Automation.Runspaces.WSManConnectionInfo

时间:2016-02-29 14:45:07

标签: c# .net powershell

我需要使用 .Net-3.5

来实现这一目标

我在项目中引用了所需的DLL:

[enter image description here]

using System.Management.Automation;
using System.Management.Automation.Runspaces;

但每当我尝试使用WSManConnectionInfo时,例如here

WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.ComputerName = machineAddress;
Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo);
runspace.Open();
using (PowerShell ps = PowerShell.Create())
{ 
    ps.Runspace = runspace;
    ps.AddScript("Get-Service"); 
    var results = ps.Invoke();
    // Do something with result ... 
}  
runspace.Close(); 

我找不到"类型找不到"错误:

The type or namespace 'WSManConnectionInfo' could not be foun (are you missing a using directive or assembly reference?)

我正在尝试远程访问我们服务器上的PowerShell会话(来自在客户端计算机上本地运行的应用程序),然后可以查询该人员会话中正在运行的进程。

根据MSDN,我需要的是System.Management.Automation命名空间,我无法看到任何提及框架版本的限制。我在这里真的很愚蠢,或者微软是否拥有宇宙中最糟糕的文档?

1 个答案:

答案 0 :(得分:0)

我找到了我正在寻找的答案here

基本上,我必须从

更改我的参考

C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll

C:\Program Files(x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll

出于某种原因,这完全解决了我的所有问题 - 我不知道这两个组件之间的区别是什么,并且非常感谢对此的任何见解。