Я пытаюсь экспортировать список всех DL, и мне нужно иметь столбец с samaccountname значения ManagedBy (первая запись, если несколько).
Get-DistributionGroup | Select-Object Name, ManagedBy | Export-Csv C:\out.txt
Неудивительно, что это дает мне что-то вроде этого:
"Name","ManagedBy"
"DL-SOMETHING-SOMETHING","Microsoft.Exchange.Data.Directory.ADMultiValuedProperty`1[Microsoft.Exchange.Data.Directory.ADObjectId]"
Если бы это не было однострочным, я мог бы перебрать значения ManagedBy, использовать GET-AdUser и извлечь то, что мне нужно.
Но могу ли я сделать это однострочно, если меня интересует только первый ManagedBy?
Что-то вроде...
Get-DistributionGroup | Select-Object Name, ManagedBy[0].Samaccountname | Export-Csv C:\out.txt
Если бы я мог даже получить ту же строку, что и при запуске этого в консоли, я мог бы работать с этим:
Get-DistributionGroup | Select-Object Name, ManagedBy
Вывод
DL-SOMETHING-SOMETHING, {somedomain.com/Accounts/SomeAccount}
Попробуйте команду ниже:
Get-DistributionGroup | Select-object Name,@{label="ManagedBy";expression={[string]($_.managedby | foreach {$_.tostring().split("/")[-1]})}} | Export-Csv
Он будет выглядеть, как показано ниже: