#powershell #pscustomobject
#powershell #pscustomobject
Вопрос:
У меня возникла проблема с выводом из одного свойства в виде значения, разделенного запятой, вместо списка в out-gridview. Есть ли способ добавить значение в выходные данные в виде списка вместо одной строки?
.'C:Program FilesMicrosoftExchange ServerV14binRemoteExchange.ps1'
Connect-ExchangeServer -Auto -AllowClobber
do {
Write-Host
Write-Host
Write-Host
$name = Read-Host "What is the user's first name or letter?"
Write-Host
Write-Host
Write-Host
$list = Get-ADUser -Filter * | ? {$_.SamAccountName -match $name} |
select @{N="Highlight a User amp; Press Ctrl C then Ctrl V"; E={$_.SamAccountName}} |
sort SamAccountName |
Out-String
Write-Host -ForegroundColor Green $list
$box = Read-Host "Copy and paste the mailbox you want to see?"
$user = $box
$mailbox= Get-Mailbox -Identity $user | Get-MailboxStatistics |
Sort totalitemsize -desc |
select @{Name="User"; Expression={$_.DisplayName}},
@{Expression={"{0:N2}" -f($_.TotalItemSize.Value.ToMb()/1024)};label=”Mailbox Size in GB”},
@{Expression={"{0:N0}" -f($_.TotalItemSize.Value.ToMb())};label=”Mailbox Size in MB”},
@{Name="Message Count"; Expression={"{0:N0}" -f($_.itemcount)}},
@{Name="Database"; Expression={$_.DatabaseName}}
$folders= Get-MailboxFolderStatistics $user |
? {$_.ItemsInFolder -gt 0} |
Sort ItemsInFolder -Descending |
Select Name,
@{N="Items in Folder"; E={"{0:N0}" -f($_.ItemsInFolder)}},
@{N=”Folder Size in MB”;E={"{0:N0}" -f($_.FolderSize.ToMb())}}
$object= [PSCustomObject]@{
User = $mailbox.'User'
'Mailbox Size in MB'= $mailbox.'Mailbox Size in MB'
'Message Count' = $mailbox.'Message Count'
Database = $mailbox.Database
Name = $folders.Name
}
$object | Out-GridView
Write-Host
Write-Host
Write-Host
$runagain = Read-Host "Would you like to get another user's folder size?" | Out-String
Write-Host
Write-Host
}
while($runagain -like "y*")
Любая помощь для получения $ folders.Имя для отображения в виде списка в том же out-Gridview было бы здорово.
Спасибо
Комментарии:
1. Вы имели в виду сделать
$object.Name | Out-GridView
вместо этого?2. Нет, я хотел добавить новый столбец с именами папок и, возможно, количеством в каждом столбце папки в будущем, чтобы в одном выводе.
Ответ №1:
Вы, вероятно, ищете:
Name = $($folders.Name -join [Environment]::Newline)
Таким образом, вы больше не используете объект, а вручную создаете список, соединяя элементы новой строкой.
Комментарии:
1. Просто в качестве отступления (я не читал вопрос): в
$(...)
определении записи в вашей хэш-таблице нет необходимости.$(...)
в этом контексте требуется только ситуационно в Windows PowerShell из-за этой ошибки , которая была исправлена в ядре PowerShell.2. Спасибо, то, что у вас есть, создает список сейчас, но только в виде одной ячейки в выходных данных. Я надеялся, что в столбце new Name также будет отдельная строка для каждого значения.