当我从PowerShell执行以下脚本时,我得到了异常
Add-type -AssemblyName "Microsoft.SqlServer.BatchParser"
但是当我验证我的程序集时,我可以看到多个实例,所以有人可以告诉我可能是什么问题
答案 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"))"