Команда Select-Object
при использовании с параметром Property
принимает одно имя свойства в виде строки или строковый массив имен свойств в качестве аргумента.
В вашем случае вы объединяете три свойства в одно целоеодну строку, выполнив string.Join(",", fieldsToSelect)
.Это сводится к тому, чтобы запросить Select-Object
найти одно-единственное свойство с именем "RecipientTypeDetails, PrimarySmtpAddress, DisplayName" и, конечно, которого не существует (возвращает null
).
Чтобы это исправить, просто добавьте массив имен свойств для команды:
var sparseMailboxesCmd = new Command("Select-Object");
sparseMailboxesCmd.Parameters.Add("Property", fieldsToSelect);
Что касается вашего последнего комментария:
Select-Object
вернет PSObject (s), где каждый объект содержит свойства, которые вы добавили вкоманда.
Чтобы получить (развернуть) фактические значения из этих объектов PSO, ваше решение, использующее .ToString
, будет работать, поскольку все свойства в этом случае имеют строковый тип.Хотя я не особо разбираюсь в C #, я думаю, что это также поможет получить значения свойств из объектов PSObjects:
object.Properties["RecipientTypeDetails"].Value
object.Properties["PrimarySmtpAddress"].Value
object.Properties["DisplayName"].Value