无法加载文件或程序集'System.Management.Automation,Version = 3.0.0.0

时间:2014-12-16 22:39:24

标签: c# windows powershell

我正在用C#构建一个应用程序,到目前为止所做的只是调用" get-process" powershell命令。

我编辑了csproj文件以包含System.Management.Automation

<ItemGroup>
 <Reference Include="System.Management.Automation" />

在本地运行时(运行Powershell版本4的Windows 8.1)可以正常运行。

在具有Powershell版本2的远程Windows 7计算机上运行时,程序会抛出异常

System.IO.FileNotFoundException: Could not load file or assembly 'System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

找不到System.Management.Automation Version = 3.0.0.0。我认为这适用于任何版本的Powershell并引用本地版本

cmdlet Get-Process适用于PS V2。

是否可以停止强制执行系统管理自动化的第3版?我已经读过您可以在app.config中执行此操作,但没有参考系统管理自动化。

谢谢你的时间。

----------------------------------------------- -------编辑------------------------------------------ -----

我能够完成这项工作但是将Target框架设置为.Net 3.5,但是这会强制PS V2。无论如何我可以定位系统管理DLL的本地版本并让客户端使用该版本吗?

2 个答案:

答案 0 :(得分:8)

Powershell 2.0不包含System.Management.Automation V3。 System.Management.Automation由Windows Management Framework Core提供,而不是.Net。如果你有Powershell 2.0,你就没有Automation 3.0。有关Powershell 2.0中提供的文件/程序集的列表,请访问以下站点:

Windows Management Framework (Windows PowerShell 2.0, WinRM 2.0, and BITS 4.0)

通过在目标计算机上安装Microsoft的WMF 4.0来升级到Powershell 4.0。

http://www.microsoft.com/en-us/download/details.aspx?id=40855

答案 1 :(得分:0)

我在完全最新的 Windows 10 系统上遇到了这个确切的问题。

为我解决的是从这里安装最新版本的 Powershell:

https://github.com/powershell/powershell