Napisałem skrypt Powershell, który odczytuje plik CSV i zwraca wcześniej określoną kolekcję z danych. Poniżej znajduje się przykładowy wynik tego skryptu.Powracający PSObject jako DataTable w C#
Count Name
------ ------
12 Rubies
3 Pearls
20 Emeralds
jestem w stanie uzyskać wyniki w C# poprzez przechowywanie go w PSObject tak:
var shell = PowerShell.Create();
shell.Commands.AddScript("C:\\Scripts\\Powershell\\Get-MyData.ps1");
Collection<PSObject> results = shell.Invoke();
Teraz, kiedy jestem spodziewa pojedynczy obiekt, jestem w stanie uzyskać każdą wartość i przypisz je do zmiennych takich jak to:
foreach (PSObject psObject in results)
{
localVariable = Convert.ToString(psObject.Properties["Name"].Value);
}
Mam jednak problem z przekonwertowaniem tego rozwiązania na dynamiczne. Oznacza to, że liczba wierszy ma się różnić. Więc zaimplementowałem to wcześniej, gdy źródłem jest baza danych SQL, używając rozwiązania podobnego do tego, które zostało opublikowane here, więc założyłem, że datatables powinien być drogą, ale nie mogę go uruchomić w tym scenariuszu. Wszelkie pomysły i sugestie? Dzięki!
Uwaga: Komponent skryptu Powershell jest tutaj obowiązkowy, ponieważ zawiera inne mechanizmy formułowania danych wyjściowych, więc chociaż mogłem po prostu odczytać z pliku CSV przy użyciu C#, nie jest to po prostu opcja.
Jaki masz problem? Z tego co zrozumiałem, iterujesz wszystkie wyniki i uzyskując dostęp do jego właściwości bez żadnego problemu, więc jaki jest dokładny problem powodowany przez zmienną liczbę linii? –
Cześć Lucas, jestem w stanie pobrać tylko wartości, jeśli wiem, ile jest tam wierszy. (tablica jest podobna do 'tablica [0]' lub 'tablica [1]). Próbuję utworzyć funkcję, która może przechowywać wszystkie wyniki w datatable.Mam nadzieję, że to wyczyści. – Yad
Podczas iteracji z instrukcją foreach nie potrzebujesz odwołania do tablicy. A nawet jeśli to zrobisz, możesz użyć instrukcji for dla –