Пользовательский столбец Powershell, возвращающий пустое значение с определенными командлетами - PullRequest
0 голосов
/ 24 декабря 2018

При добавлении пользовательского столбца с помощью командлета get-mailbox я получаю пустое значение.

Я пытаюсь добавить пользовательский столбец с помощью select @ {} в командлете get-mailbox.Независимо от того, что я пробовал, результат всегда является пустым значением, я менял исходный командлет и заменял его, скажем, get-process, а затем он работал.Я даже пытался явно указать имя пользователя и не полагаться на переменную конвейера, и это не сработало.

get-mailbox <username> | select name, @{name="size"; expression={Get-MailboxStatistics $_.samaccountname | select -ExpandProperty TotalItemSize}}

Заранее благодарен за любую помощь.

Редактировать 1: Причина, по которой мой вопрос не совпадает с Скрипт Powershell с отсутствующими выходными данными Get-Mailbox и Get-MailboxStatistics , так как в упомянутом вопросе человек получал некоторые результаты из своих пользовательских столбцов, только онибыли проблемы с одной строкой в ​​одном столбце, я даже не получаю результаты для второй или третьей строк.

Редактировать 2: Я знаю, что могу создать свой собственный объект, но япытался не иметь, этот код должен работать (по крайней мере, в идеальном мире).Кроме того, причина, по которой я не работаю напрямую, я бы хотел, но я пытался представить свой вопрос с наименьшим возможным кодом, чтобы сообществу было легче его воспроизвести и проанализировать. Фактический код, который я хотел запустить,this

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}

Моя конечная цель состояла в том, чтобы получить таблицу со списком пользователей с указанием размера их почтового ящика и размера их архива.

Редактировать 3: неважно, я пытался создать свой собственный объекти та же проблема сохраняется.При условии, что мой код используется для объекта.

 get-mailbox <username> | foreach {[pscustomobject]@{name = $_.name; "mailbox size" = Get-MailboxStatistics $_.samaccountname | select -expand TotalItemSize; "Archive size" = Get-MailboxStatistics $_.samaccountname -archive | select -expand TotalItemSize}}

Еще раз спасибо!

1 Ответ

0 голосов
/ 25 декабря 2018

Понял.Ваш код читается так:

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}

есть ошибка.Ваше выражение включает ссылку на samaccountname, которая находится в выводе Get-Mailbox, но не в выводе Get-MailboxStatistics, таким образом, вы запрашиваете пустой почтовый ящик.Чтобы исправить это, запросите архивный почтовый ящик с атрибутом displayName.

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.displayname -archive | select -ExpandProperty TotalItemSize}}
...