0

Exchange2010のメールボックスサイズに関する簡単なレポートを作成しようとしています。

これが機能している間:

Get-MailboxStatistics -server <serverfqdn> |ft  displayname, TotalItemSize

これはしません(2番目の列は空のままです):

Get-MailboxStatistics -server <serverfqdn> |ft  displayname, {$_.TotalItemSize.Value.ToBytes()}

問題は、サイズを整数にする必要があるため、コードの最初の行が目的を果たさないことです。いくつかのWebサイトによると、コードの2行目は機能するはずですが、残念ながら私のマシンでは機能しません。

最初の行を使用した後で値を解析できることはわかっていますが、それは不必要に非効率的ですよね。:-)

誰もが助けてくれることを願っています。

よろしく、ケビン

4

10 に答える 10

2

これは私のために働いた

$a = get-mailbox -id user | Get-MailboxStatistics 

$a.TotalItemSize.Value.ToMB()

$a.TotalItemSize.Value.ToKB()
于 2011-12-21T21:42:05.240 に答える
2

インポートされたPSセッションから実行する場合、タイプがカスタムオブジェクトになるため、メソッド.ToMB()は失われます。$ variable.TotalItemSize.Valueは、KB、MB、またはGBの2要素配列[0]になり、[1]は常にバイトになります。

したがって、これを使用するために、文字列で遊んで、目的を達成することができます。

$mailboxes = Get-Mailbox -Filter{(RecipientType -eq "UserMailbox") -and (CustomAttribute12 -eq "whatever")}
foreach ($mailbox in $mailboxes)
{
$size1 = Get-MailboxStatistics $mailbox.id 
[string]$bob = $size1.TotalItemSize.Value
[int]$bill = $bob.TrimEnd(" bytes)").Split("(")[1] # The bytes part of the array.
$bill = $bill/1mb # Convert into MB's
if ($bill -le 1500) {do something} Else {"Too Big " + $bill} # note -le 1500 NOT 1500MB

}

これがお役に立てば幸いです

于 2016-03-29T00:54:04.680 に答える
1

同じ問題があります。あなたがこれを解決したかどうかはわかりません。私はこれを持っています、それはかなり醜いです-しかし動作します:

$a = get-mailbox USER | get-mailboxstatistics
$intTotalItemSize = [int]$a.TotalItemSize.SubString($a.TotalItemSize.indexof("(")+1, $a.TotalItemSize.indexof(" b")-$a.TotalItemSize.indexof("("))
于 2011-09-29T23:08:32.763 に答える
0

あなたのサイズ表現のためにこれを試してください:

@{expression={$_.TotalItemSize.Value.ToMB()};label="Mailbox Size(MB)"}

方法もあると思いますToKB()

于 2010-07-01T15:27:50.783 に答える
0

MVP Shay Levyは、彼のブログ(http://blogs.microsoft.co.il/blogs/scriptfanatic/archive/2011/08/22/get-full-control-over-your-exchange-remote-powershell -session.aspx)。

基本的に、リモーティング先のサーバー上のPowerShell仮想ディレクトリの設定を変更する必要があります。

これは、Exchangeサーバーにリモーティングしている人にとっては、この種の制御ができるという素晴らしいニュースですが、ホストされたExchangeソリューションを使用していて、これらの設定を変更できない私たちにとっては役に立ちません。PowerShellの超クールさの一部を放棄し、文字列の解析に戻ってバイトを取得し、そこから変換する必要があると思います。

- 編集 -

これが、すべてのユーザーのメールボックスサイズのファイルの出力に取り組んだ方法です。もう少し圧縮することもできますが、この方法ではもう少し読みやすくなります。

$allMailboxes = Get-Mailbox -ResultSize Unlimited

ForEach ( $mailbox in $allMailboxes ) {
    $itemSizeString = ( Get-MailboxStatistics $mailbox.Identity ).TotalItemSize.Value.ToString()
    $posOpenParen = $itemSizeString.IndexOf("(") + 1
    $numCharsInSize = $itemSizeString.IndexOf(" bytes") - $posOpenParen 
    $mailboxSizeInBytes = $itemSizeString.SubString($posOpenParen,$numCharsInSize).Replace(",","")

    Write-Output "$($mailbox.alias),$($mailboxSizeInBytes)"
}
于 2012-02-10T15:04:52.417 に答える
0

この記事を参照してください:http://blogs.technet.com/b/gary/archive/2010/02/20/the-get-mailboxstatistics-cmdlet-the-totalitemsize-property-and-that-pesky-little- b.aspx

Get-Mailbox | Get-MailboxStatistics | Add-Member -MemberType ScriptProperty -Name TotalItemSizeinMB -Value {$this.totalitemsize.value.ToMB()} -PassThru | Format-Table DisplayName,TotalItem*
于 2014-06-12T12:21:07.690 に答える
0

リモーティングセッションの外でこの作業を行う必要があったので、Greybearからの回答を次のように簡略化しました。

$a = get-mailbox USER | get-mailboxstatistics
$intTotalItemSize = [int64]($a.TotalItemSize -split '[\( ]')[3]

または、元の質問の形式で::

Get-MailboxStatistics -Server <serverfqdn> | Select-Object -Property DisplayName,@{label="TotalItemSize";expression={[int64]($_.TotalItemSize -split '[\( ]')[3]}} | ft

[int]は4GBを超えるメールボックスでは失敗することに気付いたため、[int64]に変更しました。または、メールボックスをMB単位で表示します。

Get-MailboxStatistics -Server <serverfqdn> | Select-Object -Property DisplayName,@{label="TotalItemSize";expression={[int64](([int64]($_.TotalItemSize -split '[\( ]')[3])/1048576)}} | ft
于 2014-08-25T20:30:23.330 に答える
0

名前は式の前に置く必要があります。これは機能します。

Get-MailboxStatistics -Identity [name] | select @{label=”User”;expression={$_.DisplayName}},lastlogontime,@{label=”Total Size (MB)”;expression={$_.TotalItemSize.Value.ToMB()}}
于 2014-10-21T23:36:37.673 に答える
0

これは私のために働く

@{Name="TotalSize (MB)"; Expression={((($_.TotalItemSize) -split " ")[0])}}
于 2018-01-22T15:44:14.460 に答える
-1

あなたは試すかもしれません:

get-mailbox -resultsize unlimited | Get-MailboxStatistics | ft displayname,@{label="Total Size (MB)";expression={$_.TotalItemSize.Value.ToMB()}}
于 2016-04-06T18:30:56.317 に答える