如何从Invoke-Sqlcmd诊断此异常?

And*_*ykh 3 powershell powershell-3.0 sqlps

我正在运行以下命令(我能想到的最小的可重复示例):

Invoke-Sqlcmd "select * from sys.databases"  | %{
    Invoke-Sqlcmd "select 1"     
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Invoke-Sqlcmd:找不到适合指定文化或中性文化的任何资源.确保"pipeline.resources"在编译时正确嵌入或链接到程序集"System.Management.Automation",或者所有所需的附属程序集都是可加载和完全签名的.在行:1 char:1 + Invoke-Sqlcmd"select*from sys.databases"| %{+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ClassInfo:InvalidResult :(:) [Invoke-Sqlcmd],MissingManifestResourceException + FullyQualifiedErrorId:ExecutionFailed,Microsoft.SqlServer.Management.PowerShell.GetScriptCommand

累了这个:

  • 使用ISE和命令行
  • 两者都提升("以管理员身份运行")而不是
  • 针对SQL 2012和SQL 2008
  • 来自Windows 8和Server 2008

在所有情况下,结果都是相同的.

为什么以及如何诊断?

Cha*_*ler 5

我还注意到使用invoke-sqlcmd通过管道将invoke-sqlcmd命令链接在一起的问题.似乎解决问题的解决方法,将第一个命令的输出保存到变量然后将管道输出保存到下一个invoke-sqlcmd调用.

$databases = Invoke-Sqlcmd "select * from sys.databases"  
$databases | % { Invoke-Sqlcmd "select 1" }
Run Code Online (Sandbox Code Playgroud)