我试图从在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
但是现在数据遍布整个地方,无法读取,也不包含任何列名。
是否有人能够就如何实现这一目标给我一些建议/指示?
答案 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