在Powershell中格式化SQL查询输出

时间:2017-03-06 22:19:35

标签: sql sql-server powershell

我试图从在PowerShell中运行的sql查询获取输出看起来是正确的,我有点困惑。让我们说我试图像Select * from Database一样运行一个简单的qry。理想情况下,我希望结果显示在屏幕上,而不是写入文件。

我现在的脚本非常基本:

sqlcmd -S (SQL Server Info) -U (Username) -P (Passowrd) -d (Database) -b -Q "sp_whoisactive" | format-table

理想情况下,我想确保输出采用可读格式,例如

Column 1        Column 2        Column 3
Data            Data2           Data3

但是现在数据遍布整个地方,无法读取,也不包含任何列名。

是否有人能够就如何实现这一目标给我一些建议/指示?

2 个答案:

答案 0 :(得分:1)

您是直接使用Invoke-Sqlcmd还是sqlcmd

使用Invoke-Sqlcmd,您可以使用-h:

https://msdn.microsoft.com/en-us/library/cc281720.aspx

http://www.mikefal.net/2015/03/31/effectively-using-invoke-sqlcmd/

答案 1 :(得分:0)

Powershell 不知道如何处理来自 sqlcmd 的输出。而是使用为 Powershell 的内部工作量身定制的 Invoke-Sqlcmd,可以将数据作为可操作的对象进行传递。

如果您使用查询调用 Invoke-Sqlcmd,它将以线性方式列出结果,这不是您想要的。要获得数据的表格视图的格式,请再次像您尝试使用 sqlcmd...将输出通过管道输送到 Format-Table 一样。

这是要使用的命令

Invoke-Sqlcmd -Server '{Server Name}'   '
              -Database {DatabaseName}  '
              -query "Select * from MyTable" | Format-Table