【发布时间】:2020-03-10 08:17:39
【问题描述】:
我有一个将 SQL 查询结果导出到 json 文件的函数:
# Connect to SQL Server
$SqlCommand.CommandText = $Query;
$SqlCommand.Connection = $SqlConnection;
# Execute query and get the result back
$QueryResult = $SqlCommand.ExecuteReader()
# Hold query result in data table
$QueryTable = New-Object "System.Data.DataTable"
$QueryTable.Load($QueryResult)
# Export query results to json
$QueryTable | Select-Object $QueryTable.Columns.ColumnName | ConvertTo-Json | Out-File "$OutputDirectory\$SqlInstance-$QueryName.json"
我有多个要执行的查询,并为每个查询创建了变量:
$q1 = "SELECT blah"
$q2 = "SELECT more blah"
$q3 = "SELECT even more blah"
我通过以下方式调用函数:
ExportQueryResultsToJson -Query $q1 -QueryName "q1"
我有大约 80 个查询要执行,所以我想使用 ForEach 而不是 80 行 ExportQueryResultsToJson ...。我创建了一个变量数组:
$SqlServer2012QueryArray = @(
$q1,
$q2,
$q3
)
我尝试了以下多种变体:
foreach ($Query in $SqlServer2012QueryArray) {
$Expression = "ExportQueryResultsToJson -Query '$Query' -QueryName $Query"
Invoke-Expression $Expresion
}
我尝试过使用 splat,但我不知道如何正确传递所有查询。
我做错了什么?
【问题讨论】:
标签: sql-server function powershell foreach