Вы можете использовать System.Data.SqlClient.SqlConnection
вместо SqlServer.Management
class
$conn = New-Object Data.Sqlclient.Sqlconnection`
("Data Source=DATABASE;Initial Catalog=master;Integrated Security=SSPI;")
$adapter = New-Object Data.Sqlclient.Sqldataadapter("exec sp_who2", $conn)
$set = new-object data.dataset
$adapter.fill($set)
$table = new-object data.datatable
$table = $set.tables[0]
Чтобы распечатать всю таблицу, просто используйте format-table
$table | ft -AutoSize
Чтобы получить столбецпо имени используйте итератор foreach и получите доступ к свойствам заметки по имени
$table | % {$_.login}
. Ed: Здесь тот же запрос с использованием SqlServer.Management.
[void][Reflection.Assembly]::LoadWithPartialName`
("Microsoft.SqlServer.ConnectionInfo")
$conn = new-object Microsoft.SqlServer.Management.Common.ServerConnection
$conn.ConnectionString = `
"Server=ServerName;Database=ShopDB;Integrated Security=True"
$sqlQuery = new-object System.Collections.Specialized.StringCollection
$sqlQuery.Add("exec sp_who2")
$resultset = $conn.ExecuteWithResults($sqlQuery)
Доступ к результатам путем выборанулевой набор результатов, нулевая таблица, нулевая строка и элемент по имени
$resultset[0].tables.Item(0).Rows[0].Item("Login")