2016-11-02 6 views
0

私は、最小の交換データベースを返すオンラインで見つかったPoSH関数をいくつか持っています。スクリプトをテストすると、意図したとおりに動作しないことがわかりました。つまり、返される最小のデータベースは実際には正しくありません。最小のdbを返す関数が動作していない

これはコードです:私は私のExchange環境でこれを実行すると

#http://izzy.org/scripts/Exchange/Admin/Create-Mailbox.ps1 
$DBFilter = "MBX_*" # Limit databases to only those that start with "Primary" 

Function Get-SmallestDB { 
    Try { 
     $MBXDbs = Get-MailboxDatabase | ? {$_.Identity -like $DBFilter } 
     $MBXDBCount = $PSSessions.Count 
    } 
    Catch { 
     $MBXDBCount = 0 
    } 
    If (!$MBXDbs) {ExitScript "find databases with a name that matches a filter of [$DBFilter]." $False} 

    # Loop through each of the MBXDbs 
    ForEach ($MBXDB in $MBXDbs) { 
     # Get current mailboxes sizes by summing the size of all mailboxes and "Deleted Items" in the database 
     $TotalItemSize = Get-MailboxStatistics -Database $MBXDB | %{$_.TotalItemSize.Value.ToMB()} | Measure-Object -sum 
     $TotalDeletedItemSize = Get-MailboxStatistics -Database $MBXDB.DistinguishedName | %{$_.TotalDeletedItemSize.Value.ToMB()} | Measure-Object -sum 
     $TotalDBSize = $TotalItemSize.Sum + $TotalDeletedItemSize.Sum 
     Write-Host "$MBXDB $($TotalItemSize.Sum) $($TotalDeletedItemSize.Sum) $TotalDBSize" 
     # Compare the sizes to find the smallest DB 
     If (($TotalDBSize -lt $SmallestDBsize) -or ($SmallestDBsize -eq $null)) { 
      $SmallestDBsize = $DBsize 
      $SmallestDB = $MBXDB }} 
    return $SmallestDB } 

は、基本的には$ SmallestDBとして "MBX_20" を返します。しかし、私はいくつかのデバッグコードを追加しました($の出力値に($ TotalItemSize.Sum、$($ TotalDeletedItemSize.Sum)と$ TotalDBSize-ホストを書き、その結果は以下のとおりです。

MBX_1 140561 5180 145741 
MBX_2 190865 15882 206747 
MBX_3 174393 1714 176107 
MBX_4 122362 6479 128841 
MBX_5 108833 15409 124242 
MBX_6 196569 13793 210362 
MBX_7 114298 2144 116442 
MBX_8 140896 21558 162454 
MBX_9 160024 13364 173388 
MBX_10 188268 6046 194314 
MBX_11 132256 15300 147556 
MBX_12 173262 6486 179748 
MBX_13 101107 3761 104868 
MBX_14 131453 4930 136383 
MBX_15 134682 4424 139106 
MBX_16 146767 12484 159251 
MBX_17 155224 2074 157298 
MBX_18 117147 12270 129417 
MBX_19 129101 6597 135698 
MBX_20 134675 9059 143734 

あなたは143734でMBX_20を見ることができるように最小のデシベルではありません。私は今、コードを修正しようとしていますが、私はPOSHと非常に良好ではないです。任意のヒント?

+0

さらにテストすると、リスト内の最後のdbが出力され、実際には最小のdbではありません。 – v3rd1ct

+0

いくつかの変数の名前を変更して場所を逃したようです。 '$ SmallestDBsize = $ DBsize'は' $ SmallestDBsize = $ TotalDBSize'でなければなりません。そうでなければ '$ DBsize'は未定義($ null)なので、'($ SmallestDBsize -eq $ null) 'は常に真であるので、' $ SmallestDB'は常に更新され、最後の$ MBXDBになります。 ( '$ MBXDBCount = $ PSSessions.Count'は' $ MBXDBCount = $ MBXDbs.Count'ですか?) – TessellatingHeckler

+0

わかりません...何ですか? – TessellatingHeckler

答えて

0

私のコメントから取って、私はそれはタイプミスだと思うと

$SmallestDBsize = $DBsize 

はする必要があります

$SmallestDBsize = $TotalDBSize 
関連する問題