我有一个我想要找到并从数据库中取出的值。我有我需要的一切来运行这个脚本,除了如何将结果存储在一个变量中,然后将这些结果写入一个txt文件
$CNumber = Invoke-Sqlcmd -query ("Select Cust From SY.CompanyCode") -ServerInstance $SQLInstance -Database $Database
Add-Content $Mobile $CNumber
当它将结果写入文本文件时,它看起来像这样:
System.Data.DataRow
当我刚刚运行Invoke-Sqlcmd并且不尝试将其存储在变量中时,我可以看到正确的值。所以我假设一旦这个查询运行,我需要以某种方式转换结果?
请谢谢。
答案 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
}