如何使用 PowerShell 在 SSMS 中执行 SQL Server 查询

Vin*_*vel 0 sql-server powershell

我的本地机器中有一个脚本文件。我必须打开 SSMS 并在 SSMS 中打开查询并执行查询。

为了打开 SSMS 和查询,我使用了以下 PowerShell 脚本来完成它。

ssms.exe 'E:\PowerShell_PROD\Screenshot\ServerDetails.sql' -E -S localhost
Run Code Online (Sandbox Code Playgroud)

如何使用 PowerShell 运行此查询以及如何关闭此查询窗口?

我这样做的原因是我必须获取 SQL Server 属性和其他信息的证据。为此,我有一个 PowerShell 脚本来捕获屏幕截图。

我正在准备 PowerShell 脚本,该脚本在 SSMS 中运行每个查询并捕获结果并保存到指定路径。现在可以在 SSMS 中打开查询并捕获屏幕截图,但我无法运行查询。

Tom*_*m V 8

您可能不应该这样做,但可以使用SendKeys模拟用户活动。

将击键发送到活动应用程序。

这做你想要的:

add-type -AssemblyName System.Windows.Forms

ssms.exe 'c:\temp\test.sql' -E -S localhost

# wait to make sure the application is open
start-sleep -Milliseconds 10000

# press F5
[System.Windows.Forms.SendKeys]::SendWait("{F5}")

# wait for the query to finish
start-sleep -Milliseconds 10000

# press ALT-F4
[System.Windows.Forms.SendKeys]::SendWait("%{F4}")
Run Code Online (Sandbox Code Playgroud)

  • 需要更多`xp_cmdshell`。 (5认同)

gbn*_*gbn 6

我不明白您为什么要使用 SSMS 进行无人值守的脚本执行。
根本没有附加值。

你会使用sqlcmd吗?

sqlcmd -Q 'E:\PowerShell_PROD\Screenshot\ServerDetails.sql' -E -S localhost
Run Code Online (Sandbox Code Playgroud)

调用 SQLCmd

Invoke-SQLCmd -ServerInstance localhost -Query 'E:\PowerShell_PROD\Screenshot\ServerDetails.sql'
Run Code Online (Sandbox Code Playgroud)

这几乎是同一件事。引用文档

Invoke-Sqlcmd cmdlet 运行包含 SQL Server SQLCMD 实用程序支持的语言和命令的脚本。