我需要使用 .Net-3.5
来实现这一目标我在项目中引用了所需的DLL:
[]
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
命名空间,我无法看到任何提及框架版本的限制。我在这里真的很愚蠢,或者微软是否拥有宇宙中最糟糕的文档?
答案 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
出于某种原因,这完全解决了我的所有问题 - 我不知道这两个组件之间的区别是什么,并且非常感谢对此的任何见解。