Нет причин использовать Powershell вообще. Сценарий Powershell использует объекты ADO.NET , которые проще для использования в C #. В документации OracleDataReader есть пример, показывающий, как выполнить запрос и прочитать результаты.
public void ReadData(string connectionString)
{
string queryString = "SELECT A,B,C,D FROM XXXXX";
using (var connection = new OracleConnection(connectionString))
{
var command = new OracleCommand(queryString, connection);
connection.Open();
using(OracleDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine("{0}, {1}, {2}, {3}",
reader.GetDateTime(0),
reader.GetDateTime(1),
reader.GetDateTime(2),
reader.GetDateTime(3));
}
}
}
}
Вопрос не объясняет, как будут использоваться результаты. Скорее всего, они не будут распечатаны.
Один из вариантов - использовать их в самом цикле. Другой вариант - загрузить их в DataTable, вызвав DataTable.Load () , например,
using(OracleDataReader reader = command.ExecuteReader())
{
var table=new DataTable();
table.Load(reader);
return table;
}
DataTable будет содержать столбцы и типы, возвращаемые читателем.
ADO.NET был частью .NET с самого начала, поэтому он очень хорошо описан в документации, курсах, статьях и учебных пособиях.
В настоящее время гораздо чаще загружать результаты непосредственно в строго типизированные объекты, используя ORM, такие как Entity Framework, или микро-ORM, такие как Dapper . Предполагая, что у нас есть этот класс:
class MyResultClass
{
public DateTime A {get;set;}
public DateTime B {get;set;}
public DateTime C {get;set;}
public DateTime D {get;set;}
}
Dapper позволяет нам загружать список результатов с помощью простого:
string queryString = "SELECT A,B,C,D FROM XXXXX";
using (var connection = new OracleConnection(connectionString))
{
var results=connection.Query<MyResultClass>(queryString);
return results;
}