我试图从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是"详细"流.
由于捕获详细输出不是人们可以通过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)
请试试:
Invoke-Sqlcmd -Query "PRINT 'Hello World!';" -ServerInstance $Server -verbose > D:\SqlLog.txt 2>&1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30739 次 |
| 最近记录: |