Для тех, кому нужно сделать это, используя только стандартные .net и PowerShell (без дополнительных инструментов SQL), вот функция, которую я использую:
function Invoke-SQL {
param(
[string] $dataSource = ".\SQLEXPRESS",
[string] $database = "MasterData",
[string] $sqlCommand = $(throw "Please specify a query.")
)
$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$dataSet.Tables
}
Я использовал это так долго, что я не знаю, кто написал, какие части, но это было извлечено из других примеров, но упрощено, чтобы было понятно и просто то, что нужно без дополнительных зависимостей или функций.
Я использую и делюсь этим достаточно часто, чтобы превратить его в модуль сценариев на GitHub , чтобы вы могли теперь перейти в каталог ваших модулей и выполнить git clone https://github.com/ChrisMagnuson/InvokeSQL
и с этого момента invoke-sql будет автоматически загружаться при его использовании (при условии использования powershell v3 или более поздней версии).