将 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
}
我想从数据库中找到并提取一个值。我拥有 运行 这个脚本所需的一切,除了如何将结果存储在变量中,然后将这些结果写入 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
}