Załóżmy, że chcesz w Powershell wykonać zapytanie do serwera SQL i coś zrobić z wynikiem. Oto moja propozycja:
function RunQuery ([string]$computer,[string]$instance,[string]$database,[string]$query) { try { #determine the name of instance (for default instance – simply the server name and for named instance servername\instancename if($instance -eq „MSSQLSERVER”) { $SQLServer = $computer } else { $SQLServer = „$computer\$instance” } $SqlConnection = New-Object System.Data.SqlClient.SqlConnection $SqlConnection.ConnectionString = „Server = $SQLServer; Database = $database; Integrated Security = True” $SqlCmd = New-Object System.Data.SqlClient.SqlCommand $SqlCmd.CommandText = $query $SqlCmd.Connection = $SqlConnection $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SqlAdapter.SelectCommand = $SqlCmd $DataSet = New-Object System.Data.DataSet $SqlAdapter.Fill($DataSet) | Out-Null $SqlConnection.Close() #return value $DataSet.Tables[0] } catch {} return false }Teraz korzystanie z tej funkcji poniżej. do zmiennej $table zostanie wpisany wynik polecenia wykonanego w instancji domyślnej na serwerze serverName. Jeśli chodzi o nazwaną instancję, to podaj jej nazwę zamisat MSSQLSERVER.
$table = RunQuery 'serverName’ 'MSSQLSERVER’ „master” 'select name, user_access_desc from sys.databases’A teraz iteracja po wierszach zwróconej tabeli:
foreach ($record in $table) { $col1 = $record.Item(0) $col2 = $record.Item(1) echo „$col1 $col2” }