将Invoke-Sqlcmd查询存储为字符串

时间:2017-10-26 22:13:47

标签: sql sql-server powershell invoke-sqlcmd

我有一个我想要找到并从数据库中取出的值。我有我需要的一切来运行这个脚本,除了如何将结果存储在一个变量中,然后将这些结果写入一个txt文件

$CNumber = Invoke-Sqlcmd -query ("Select Cust From SY.CompanyCode") -ServerInstance $SQLInstance -Database $Database

Add-Content $Mobile $CNumber

当它将结果写入文本文件时,它看起来像这样:

System.Data.DataRow

当我刚刚运行Invoke-Sqlcmd并且不尝试将其存储在变量中时,我可以看到正确的值。所以我假设一旦这个查询运行,我需要以某种方式转换结果?

请谢谢。

1 个答案:

答案 0 :(得分:2)

由于查询结果为System.Data.DataRow,因此PowerShell首先需要将DataRow转换为String才能与Add-Content一起使用,这是最简单的方法将任何对象转换为String是使用ToString()方法。

您可以通过致电

自行检查
$CNumber.ToString()

它应该在控制台中显示为:

System.Data.DataRow # OR System.Object[] if there are multiple DataRows

由于您只选择了一列,您只需访问DataRow上的属性,但请记住,查询可能会返回多个DataRow我们应该循环遍历它们,类似于这样:

foreach($row in $CNumber.Cust)
{
    # row will be equal to each cust from the query
    # add row to your file here
}