Я не думаю, что есть какой-либо простой способ преобразовать вывод PowerShell в более простой для обработки формат. Вам нужно «вручную» вытащить свойства, которые вы хотите. Например, вы можете получить значение 'AllocatedSize' следующим образом:
var allocatedSize = results.First().Members["AllocatedSize"].Value;
Если вы хотите, чтобы ваши собственные типы основывались на этих значениях, вы можете сделать что-то вроде этого:
Определите свой тип (измените свойства, чтобы они соответствовали тем, которые вы хотите):
public class MyDisk
{
public long AllocatedSize { get; set; }
public string FriendlyName { get; set; }
public bool IsBoot { get; set; }
public int Number { get; set; }
}
Добавить вспомогательный метод, который выполняет преобразование:
private static MyDisk ConvertToMyDisk(PSMemberInfoCollection<PSMemberInfo> item)
{
return new MyDisk
{
AllocatedSize = long.Parse(item["AllocatedSize")].Value.ToString()),
FriendlyName = item["FriendlyName"].Value.ToString(),
IsBoot = bool.Parse(item["IsBoot"].Value.ToString()),
Number = int.Parse(item["Number"].Value.ToString())
};
}
Затем вы можете преобразовать возвращаемые значения в ваш собственный тип с помощью некоторого базового LINQ:
List<MyDisk> myDisks = results.Select(d => ConvertToMyDisk(d.Members)).ToList();