我正在尝试让[poshrunner.exe]能够在安装了PowerShell 3.0版的计算机上的PowerShell 2.0版环境中运行脚本。 PowerShell.exe支持此功能,although it seems that distinct support for PowerShell 1.0 is dubious。
我正在运行Windows 8.我的GAC中有两个版本的System.Management.Automation.dll:
powershell.exe -version 3.0
加载)powershell.exe -version 1.0
和powershell.exe -version 2.0
加载)据我所知,我对System.Management.Automation.dll没有publisher policy assembly
C:\Windows\assembly\GAC_MSIL>dir C:\Windows\assembly\GAC_MSIL\policy*
Volume in drive C has no label.
Volume Serial Number is 0207-A8AA
Directory of C:\Windows\assembly\GAC_MSIL
11/16/2012 11:49 PM <DIR> Policy.12.0.Microsoft.Office.Interop.Access.Dao
12/13/2012 11:49 PM <DIR> policy.2.1.Microsoft.Web.PlatformInstaller
12/13/2012 11:49 PM <DIR> policy.3.0.Microsoft.Web.PlatformInstaller
10/29/2012 03:33 PM <DIR> policy.3.5.System.Data.SqlServerCe
10/29/2012 03:33 PM <DIR> policy.3.5.System.Data.SqlServerCe.Entity
0 File(s) 0 bytes
5 Dir(s) 51,204,710,400 bytes free
C:\Windows\assembly\GAC_MSIL>
但是,执行AppDomain.CurrentDomain.Load("System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
正在加载程序集的版本3。 Assembly.Load()具有相同的结果。
在致电程序集之前:
[]
致电大会后:
[]
该代码恰好在辅助应用程序域中运行,因此我愿意并且能够使用AppDomain设置。如何在运行时有条件地强制System.Management.Automation,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35。
答案 0 :(得分:1)
随着时间的推移,我遇到了System.Management.Automation的各种问题。我最近再次点击它并决定找到一种使用批处理文件从.NET运行PowerShell的替代方法。有关代码示例,请参阅此博客文章: http://www.nootn.com.au/2013/01/run-powershell-from-net-program-without.html
这也提到了如何强制它运行特定版本的PowerShell,所以如果这个解决方案适合你,它可能是你的问题的答案(假设你很乐意尝试避免System.Management.Automation)。
我希望这有助于解决您的问题或解决它!
答案 1 :(得分:0)
如果您转到项目中的引用,请找到引用并告诉它复制到本地也应该有帮助。