无法加载文件或程序集' Microsoft.SqlServer.BatchParser,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91'

时间:2016-08-30 07:10:44

标签: powershell-v3.0

当我从PowerShell执行以下脚本时,我得到了异常

Add-type -AssemblyName "Microsoft.SqlServer.BatchParser"

但是当我验证我的程序集时,我可以看到多个实例,所以有人可以告诉我可能是什么问题

enter image description here

2 个答案:

答案 0 :(得分:1)

如果我正确理解this article,PowerShell使用静态内部表将Microsoft.SqlServer.BatchParser之类的名称转换为完全限定的程序集名称,因此您可能需要类似

的内容
Add-Type -Assembly 'Microsoft.SqlServer.BatchParser, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

或使用LoadWithPartialName()

[Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.BatchParser')

加载你想要的程序集。

答案 1 :(得分:0)

我也遇到了麻烦,连Ansgar的回答都没有帮助。我的问题是,当从任务调度程序运行时,它无法从Invoke-SqlCmd模块运行SQLPS。我尝试了 Rundeck Windows任务计划程序,两者都导致了同样的错误。直接在ISE中运行原始脚本可以正常工作。

要解决我的问题,我在GitHub上使用了来自 RamblingCookieMonster Invoke-SqlCmd2,因为它不依赖于加载那些失败的程序集。 Ansgar的回答是有效的,但可能无法涵盖所有​​情况。对于其他情况,请尝试RamblingCookieMonster from GitHub

您可以通过运行以下命令从GitHub直接在PowerShell中加载它:

Invoke-Expression "$((New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/RamblingCookieMonster/PowerShell/master/Invoke-Sqlcmd2.ps1"))"