Как выбрать значения из нескольких инструкций Get

#powershell

#powershell

Вопрос:

Я хочу выбрать значения из нескольких инструкций get, соединенных через канал, например. Я хочу отчет, который показывает мне поля Identity и MailEnabled из Get-PublicFolder и FolderPath и ItemCount из Get-PublicFolderStatistics.

Ниже приведен код, который я попробовал:

 Get-PublicFolder -Recurse -resultsize unlimited | select Identity,MailEnabled  | Get-PublicFolderStatistics | Select FolderPath, TotalItemSize
  

Я знаю, я могу получить результаты, используя 2 разных оператора, таких как

 Get-PublicFolder "Public FolderName" | select Identity,MailEnabled 
  

и

 Get-PublicFolderStatistics "Public FolderName" | Select FolderPath, TotalItemSize
  

Однако это не идеально, когда мне нужен этот отчет для более чем 500 общих папок. Может кто-нибудь, пожалуйста, посоветовать, есть ли лучший способ сделать это?

Ответ №1:

Без тестирования использование foreach и add-member должно дать вам то, что вам нужно.

 Get-PublicFolder -Recurse -resultsize unlimited | select Identity,MailEnabled  |
Foreach-Object {
    $_.Identity | Add-Member -MemberType NoteProperty -Name "FolderPath" -Value "$((Get-PublicFolderStatistics $_.Identity | Select FolderPath).FolderPath)",
    $_.Identity | Add-Member -MemberType NoteProperty -Name "TotalItemSize" -Value "$((Get-PublicFolderStatistics $_.Identity | Select TotalItemSize).TotalItemSize)"
}