Я написал сценарий Powershell, который читает CSV-файл и возвращает предопределенную коллекцию из данных. Ниже приведен пример вывода сценария.Возврат Powershell PSObject как DataTable в C#
Count Name
------ ------
12 Rubies
3 Pearls
20 Emeralds
Я смог получить результаты в C#, сохраняя его в PSObject так:
var shell = PowerShell.Create();
shell.Commands.AddScript("C:\\Scripts\\Powershell\\Get-MyData.ps1");
Collection<PSObject> results = shell.Invoke();
Теперь, когда я ожидал один объект, я могу получить все значения и назначьте их следующим переменным:
foreach (PSObject psObject in results)
{
localVariable = Convert.ToString(psObject.Properties["Name"].Value);
}
Однако у меня возникли проблемы с преобразованием этого решения в динамическое. То есть ожидается, что количество строк будет меняться. Поэтому я реализовал это раньше, когда исходный код является базой данных SQL с использованием решения, аналогичного тому, которое было опубликовано here, поэтому я предположил, что данные должны быть способными, но я не могу заставить его работать в этом сценарии. Любые идеи или предложения? Благодаря!
Примечание: Компонент сценария Powershell здесь является обязательным, так как он включает в себя другие механизмы для формулировки вывода, поэтому, хотя я мог просто читать из файла CSV с помощью C#, это просто не вариант.
Какая у вас проблема? Из того, что я понял, вы повторяете все результаты и получаете доступ к своим свойствам без каких-либо проблем, так какая же проблема, вызванная переменным числом строк? –
Привет, Лукас, я могу только получить значения, если знаю, сколько строк есть. (массив ссылается аналогично 'array [0]' или 'array [1]). Я пытаюсь создать функцию, которая может хранить все результаты в datatable.Надеюсь, что это очистит. – Yad
Когда вы выполняете итерацию с помощью инструкции foreach, вам не нужно ссылаться на массив. И даже если вы это сделаете, вы можете использовать оператор for для i