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

Store Invoke-Sqlcmd Query as String

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

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

Add-Content $Mobile $CNumber

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

System.Data.DataRow

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

拜托,谢谢。

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

您可以致电

自行检查
$CNumber.ToString()

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

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

由于您只选择一列,因此您可以简单地访问 DataRow 上的 属性,但请记住查询可能 return 多个 DataRow我们应该遍历它们,像这样:

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