【发布时间】: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 多年的古老的暂停命令即可。
-
如果真的想念的话,可以随时通过命令调用cmd
cmd /c 'pause' -
@alexzelaya 不起作用 - 它在显示查询输出之前触发 - 这是所有正常方法的问题
标签: powershell