【问题标题】:Pausing Powershell after Invoke-SqlcmdInvoke-Sqlcmd 后暂停 Powershell
【发布时间】:2021-05-31 07:40:22
【问题描述】:

我第一次使用 Powershell 中的 Invoke-Sqlcmd,遇到了一个恼人的挑战。该脚本工作正常,但我需要从快捷方式运行它,并在其后暂停“做某事继续”。 应该很简单吧?通常我会执行 Read-Host “按 Enter 继续”,但无论是来自 How do you do a 'Pause' with Powershell 的任何其他内容,都不起作用。

invoke-sqlcmd 的输出在暂停之后才会出现在屏幕上,因此会立即消失。 几乎就像它在异步执行一样。

我已经尝试了无数种变化:

Write-Host "Query Result:"
Invoke-Sqlcmd -ServerInstance $SQLServer -Database $db3 -Query $qcd -Verbose
Read-Host "Press enter etc..."

我发现唯一可行的方法是通过管道连接到一个循环,该循环遍历生成的 Datarow 对象 - 这似乎有点过头了

【问题讨论】:

  • 我真的很想跟着你,但是,仅供参考,Read-ost 和 Pause 是暂停 howel 脚本,而不仅仅是交互。您是否已经为您的用例查看了 Do/Until 或 Do/While?
  • 您是否尝试过将调用放入变量中然后调用它?
  • @alexzelaya 是的,这行得通——我可以遍历变量。我想这已经成为一件值得骄傲的事情了 :) 一切都告诉我我应该能够做到这一点 - 只需模仿我使用了 30 多年的古老的暂停命令即可。
  • 如果真的想念的话,可以随时通过命令调用cmdcmd /c 'pause'
  • @alexzelaya 不起作用 - 它在显示查询输出之前触发 - 这是所有正常方法的问题

标签: powershell


【解决方案1】:

在这方面花费的时间比我愿意承认的要多,我能想到的最好办法是:

Write-Host "Query Result:"
$out = Invoke-Sqlcmd -ServerInstance $SQLServer -Database $db3 -Query $qcd -Verbose
Write-Host ($out | Format-Table | Out-String)

Read-Host "Press enter etc..."

我觉得这更像是一种解决方法而不是答案

【讨论】:

  • 输出查询时可以去掉Write-Host
猜你喜欢
  • 2016-01-15
  • 2012-09-13
  • 2014-04-15
  • 2018-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多