Invoke-SqlCmd ist a great cmdlet for PowerShell for querying SQL databases. But sometimes you don’t want to install the extra requirement SQL Server Management Objects on the server.
Invoke-SqlCmd -ServerInstance $Server -Database $Database -Query "SELECT * FROM Staff"
There’s an simple alternative. Use the .NET classes in the System.Data.SqlClient namespace which are available on every computer which has the .NET framework installed.
function SqlQuery($server, $database, $query) { $connection = New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString = "Server=$server;Database=$database;Integrated Security=True;" $connection.Open() $command = $connection.CreateCommand() $command.CommandText = $query $result = $command.ExecuteReader() $table = new-object “System.Data.DataTable” $table.Load($result) $connection.Close() return $table } SqlQuery $Server $Database "SELECT * FROM Staff"