使用 Powershell 在 Windows Server 2008 R2 上的 GAC 中安装 dll



所以我有这个Powershell脚本在gac中安装MySql dll。

[System.Reflection.Assembly]::Load("System.EnterpriseServices,Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")    
$publish = New-Object System.EnterpriseServices.Internal.Publish 
$publish.GacInstall("C:Program Files (x86)MySQLMySQL Connector Net 6.9.9Assembliesv4.5MySql.Data.Entity.EF6.dll")

此脚本在 Windows Server 2012 R2 上工作正常,但在 Windows Server 2008 r2 上引发异常。

使用"1"参数调用"加载"的异常:"无法加载文件或 程序集"系统.企业服务,版本=4.0 .0.0, Culture=中性,PublicKeyToken=b03f5f7f11d50a3a' 或其之一 依赖。系统找不到已标记的文件。在 C:\Users\Administrator\Desktop\MyScript.ps1:2 char:35 + [System.Reflection.Assembly]::Load <<<<("System.EnterpriseServices, version=4.0.0.0, Culture=neutral, PublicKeyToken =b03f5f7f11d50a3a") + 类别信息:未指定:(:) [],方法调用异常 + 完全限定错误 ID : DotNetMethodException

1) Powershell以管理员身份运行

2) System.EnterpriseServices存在于 4.0.0 版本的系统中(位置:C:\Windows\Microsoft.NET\assembly\GAC_64\System.EnterpriseServices)

3) GacUtil 不是一个选项,因为 sdk 在生产环境中不可用。

我们如何在Windows Server 2008 r2上安装Gac有什么限制吗?

为什么在 Windows Server 2012 r2 中工作的脚本在 Windows Server 2008 r2 上不起作用?

我是否缺少服务器上的任何设置来使其正常工作?

我找到了答案:

Windows Server 2008 r2 上的 Powershell 使用 CLR verion 2.0,System.Enterpriseservice dll 使用 CLR 版本 4.0 创建。 Windows Server 2012 r2上的Powershell版本是4.0,这就是为什么这个脚本在Windows Server 2012 r2上运行良好。 可以使用以下命令检查版本: $psversiontable

因此,Powershell无法加载此dll。

现在如何解决此错误:将Powershell版本更改为使用CLR 4.0

如何:https://community.dynamics.com/ax/b/daxbeginners/archive/2013/12/08/this-assembly-is-built-by-a-runtime-newer-than-the-currently-loaded-runtime-and-cannot-be-loaded

要运行的脚本以更改 PS CLR 版本:

打开记事本并粘贴以下代码:

$config_text = @"
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
"@
$config_text| Out-File $pshomepowershell.exe.config
$config_text| Out-File $pshomepowershell_ise.exe.config

保存它,然后将文件扩展名重命名为 .PS1。 以管理员身份运行。

偶然发现了这篇文章,它解释了有关错误以及如何更改Powershell版本的所有内容。

希望这对某人有所帮助:)

"请重新安装 .NET Framework(3.5 或更高版本),重新启动计算机,然后重试。 https://community.powerbi.com/t5/Desktop/Unnable-to-connect-to-SQL-Server-2012/m-p/177331 "安装了框架 4.5 并启动系统,现在可以工作了。">

最新更新