我使用powershell來調用sql存儲過程,現在我想將輸出的完整集合重定向到.ps1文件中,因爲輸出行可在powershell中執行。將PowerShell輸出重定向到.ps1
我試圖使用> output.ps1,它的工作原理,但我檢查輸出文件,它包含很多'...'來替換實際輸出。
如何導出完整的輸出?還將標題關閉?
謝謝。
我使用powershell來調用sql存儲過程,現在我想將輸出的完整集合重定向到.ps1文件中,因爲輸出行可在powershell中執行。將PowerShell輸出重定向到.ps1
我試圖使用> output.ps1,它的工作原理,但我檢查輸出文件,它包含很多'...'來替換實際輸出。
如何導出完整的輸出?還將標題關閉?
謝謝。
這取決於你如何調用存儲過程。如果你在PowerShell中調用它,你應該能夠收集輸出,所以我假設你將它作爲一個單獨的任務開始它自己的窗口。沒有你的實際例子,這裏有一個從tasklist.exe命令收集輸出的方法。你可能會發現它適用。
cls
$exe = 'c:\Windows\System32\tasklist.exe'
$processArgs = '/NH'
try {
Write-Host ("Launching '$exe $processArgs'")
$info = New-Object System.Diagnostics.ProcessStartInfo
$info.UseShellExecute = $false
$info.RedirectStandardError = $true
$info.RedirectStandardOutput = $true
$info.RedirectStandardInput = $true
$info.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden
$info.CreateNoWindow = $true
$info.ErrorDialog = $false
$info.WorkingDirectory = $workingDir
$info.Filename = $exe
$info.Arguments = $processArgs
$process = [System.Diagnostics.Process]::Start($info)
Write-Host ("Launched $($process.Id) at $(Get-Date)")
<#
$process.StandardOutput.ReadToEnd() is a synchronous read. You cannot sync read both output and error streams.
$process.BeginOutputReadLine() is an async read. You can do as many of these as you'd like.
Either way, you must finish reading before calling $process.WaitForExit()
http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandardoutput.aspx
#>
$output = $process.StandardOutput.ReadToEnd()
$process.WaitForExit() | Out-Null
Write-Host ("Exited at $(Get-Date)`n$output")
} catch {
Write-Host ("Failed to launch '$exe $processArgs'")
Write-Host ("Failure due to $_")
}
$output
重定向輸出和錯誤流的最安全方法是使用[如何在PowerShell中異步捕獲進程輸出?](http://stackoverflow.com/q/24370814) –
你能分享你的輸出嗎? – Arpit
這裏只是我的輸出的一個簡短示例... $ application = New-Object -ComObject Visio.Application $ documents = $ application.Documents $ document = $ documents.Add(「AMSGantt.vst」) $ pages = $ application.ActiveDocument.Pages $ page = $ pages.Item(1) $ shape500 = $ page.DrawLine(2,7.9,11,7.9) $ shape500.TextStyle =「Title」 $ shape500.LineStyle =「標題「 $ shape500.Text =」Assignation deBarrières - 2012年12月17日,星期一「 – Apriljuly
它實際上使用powershell打開visio並在預定義模板上開始繪製形狀。所以我想要的是將這些輸出存儲到.ps1中,以便我可以從powershell調用ps1文件來執行這些輸出。 – Apriljuly