Powershell Invoke-Sqlcmd捕获详细输出

Sim*_*mmo 12 powershell

我试图从Powershell中的Invoke-Sqlcmd捕获详细输出.任何人都有任何想法这样做:

Invoke-Sqlcmd  -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose  > D:\SqlLog.txt
Run Code Online (Sandbox Code Playgroud)

SqlLog.txt文件应包含文本"Hello World!"

Jan*_*han 13

根据Capture Warning,Verbose,Debug和Host Output通过备用流:

...如果我想在脚本中捕获详细输出:

stop-process -n vd*-verbose 4>&1> C:\ Logs\StoppedProcesses.log

所以,你会做类似的事情

(Invoke-Sqlcmd -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose) 4> c:\temp\myoutput.txt
Run Code Online (Sandbox Code Playgroud)

其中4是"详细"流.


Sco*_*aad 9

由于捕获详细输出不是人们可以通过PowerShell主机的本机构造轻松完成的,因此您始终可以使用对PowerShell对象的编程访问.然后,您可以访问五种不同的信息流:

> $ps = [PowerShell]::Create()
> [ref]$e = New-Object System.Management.Automation.Runspaces.PSSnapInException
> $ps.Runspace.RunspaceConfiguration.AddPSSnapIn( "SqlServerCmdletSnapin100", $e ) | Out-Null
> $ps.AddCommand( "Invoke-Sqlcmd" ).AddParameter( "Query", "Print 'hello world'" ).AddParameter( "Verbose" )
> $ps.Invoke()
> $ps.Streams

Error    : {}
Progress : {}
Verbose  : {hello world}
Debug    : {}
Warning  : {}

> $ps.Streams.Verbose | % { $_.Message | Out-File -Append D:\SqlLog.txt }
> cat D:\SqlLog.txt

hello world
Run Code Online (Sandbox Code Playgroud)


ber*_*d_k 5

请试试:

Invoke-Sqlcmd  -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose  > D:\SqlLog.txt  2>&1
Run Code Online (Sandbox Code Playgroud)

我在找到