Powershell: Quick and Dirty Invoke-SQL

Ist auf einen Client oder Server das Standard-Kommando Invoke-SQL nicht verfügbar, kann man selbstverständlich versuchen es zu installieren.

Möchte man unabhängig von der Installation sein und nur ein schnelles Update auf die Datenbank anwenden, benutze ich:

function Invoke-SQL {  
    param(
        [string] $dataSource = ".\SQLEXPRESS",
        [string] $database = "MasterData",
        [string] $sqlCommand = $(throw "Please specify a query.")
      )

    $connectionString = "Server=$dataSource;Database=$database;Trusted_Connection=yes" 


    $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

    return $dataset.Tables

}


$result=Invoke-SQL -dataSource INSTANZ -database DATENBANK -sqlCommand "Select * FROM dbo.SomeTable"

foreach ($entry in $result) {  
    $id = $entry.ID
...
...
     Invoke-SQL -dataSource INSTANZ -database DATENBANK -sqlCommand "UPDATE dbo.Sometable SET Feld='Neuer Wert'  WHERE ID='$id'"
    }
}

Natürlich gibt es auch professionelle Varianten, wie dieses hier:
https://gallery.technet.microsoft.com/Invoke-SQL-Command-0fb807ec