====== SQL-Abfragen in Powershell ====== $a = "Datenbank-ConnectionString" $b = "SELECT abc FROM T_Table WHERE id = 1" function SQLQUERY ([string]$targetConnectionString, [string]$targetQuery) { $dt = New-Object System.Data.DataTable $SQL = New-Object System.Data.SqlClient.SqlDataAdapter $SqlConn = New-Object System.Data.SqlClient.SqlConnection $query = New-Object System.Data.SqlClient.SqlCommand $SQLConn.ConnectionString = $targetConnectionString $query.CommandType.Text $query.CommandText = $targetQuery $query.Connection = $SqlConn $SqlConn.Open() $SQL.SelectCommand = $query $SQL.FillSchema($dt, 1) $tmp1 = $SQL.Fill($dt) $SQLConn.Close(); return ($dt) } function GetDataField([System.Data.DataTable]$dt, [int]$row, [string]$DataField) { $returnvalue = "" Try { $returnvalue = $dt.Rows[$row][$DataField].toString() } Catch [System.Exception] { $returnvalue = "" } return($returnvalue) } $hello = SQLQUERY $a $b $out = GetDataField $hello 0 "abc" Die erste Funktion macht ein Query auf eine Datenbank und gibt eine DataTable zurück, die mit GetDataField abgefragt werden kann. Infos zu dem Objekt DataTable: https://msdn.microsoft.com/de-de/library/System.Data.DataTable(v=VS.110).aspx //Ich habe festgestellt, dass gar kein DataTable zurück gegeben wird, sondern nur ein Array von [[https://msdn.microsoft.com/de-de/library/system.data.datarow(v=vs.110).aspx|DataRows]]. Auch ist es möglich, dass sich der fragliche Wert nicht im ersten Objekt befindet, sondern erst im zweiten. Der Aufruf sähe dann so aus: **$out = $hello[1]["abc"]**// {{tag>[Powershell SQL Query]}}