2

私はPowershellでいくつかのことを試していますが、達成できなかったのは次のとおりです(Exchangeで)。

Get-User | Get-MailboxStatistics

しかし、出力では、コマンドレットからの"Get-User"いくつかのフィールド/出力と、コマンドレットからのいくつかのフィールド/出力が必要"Get-MailboxStatistics"です。

誰かが答えを持っているなら、私はウェブを検索しましたが、それを一言で説明するのに苦労したので成功しませんでした。

よろしくお願いします。

4

4 に答える 4

3

1つのコマンドレットの実行から開始し、結果をパイプForeach-Objectして現在のオブジェクト($ user)への参照を保存し、次に2番目のコマンドを実行して変数にも保存します。両方のオブジェクトのプロパティを使用して新しいオブジェクトを作成します。

また、メールボックスを持つユーザーをフィルタリングする必要があります。RecipientTypeDetailsパラメーターを使用してください。

$users = Get-User -RecipientTypeDetails UserMailox 
$users | Foreach-Object{

    $user = $_
    $stats = Get-MailboxStatistics $user

    New-Object -TypeName PSObject -Property @{
        FirstName = $user.FirstName
        LastName = $user.LastName
        MailboxSize = $stats.TotalItemSize
        ItemCount =  $stats.ItemCount   
    }
}
于 2012-05-12T09:17:27.517 に答える
2

それが最善の解決策なのか最適な解決策なのかはわかりませんが、実際のユーザーをforeachの変数に保存することで確実に実現できます。

$users = Get-User 
$users | % { $user = $_; Get-MailboxStatistics $_ | % 
    { 
        "User name:{0} - some mailbox statistics: {1}" -f $user.SomePropertyOfUser, $_.SomePropertyOfMailbox
    } 
}

最初のステップ(ユーザーを個別の変数に保存する)は、Exchangeコマンドレットを操作する場合にのみ必要です-ここで説明するように、Exchangeコマンドレットをforeachにネストすることはできません...

このエラーは、PowerShellリモーティングを介してExchangeコマンドレットを実行するときに発生します。このコマンドレットは、同時に実行される複数のパイプラインをサポートしていません。コマンドレットからforeach-objectに出力をパイプし、スクリプトブロック内で別のコマンドレットを実行すると、このエラーが表示される場合があります。

于 2012-05-11T15:12:40.843 に答える
0
$users = Get-User  -RecipientTypeDetails UserMailbox
$users | Foreach-Object{ $user = $_; $stats = Get-MailboxStatistics $user.DistinguishedName; New-Object -TypeName PSObject -Property @{FirstName = $user.FirstName; LastName = $user.LastName;MailboxSize = $stats.TotalItemSize;ItemCount =  $stats.ItemCount  }}

Get-MailboxStatisticsリモートで次のことを行っていたため、入力に特定のフィールドを追加する必要がありました。

The following Error happen when opening the remote Runspace: System.Management.Automation.RemoteException: Cannot process argument transformation on parameter 'Identity'. Cannot convert the "gsx-ms.com/Users/userName1" value of type "Deserialized.Microsoft.Exchange.Data.Directory.Management.User" to type "Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter".

とにかく、@Jumboと@Shay-levyの両方に感謝します

于 2012-05-14T09:03:25.660 に答える
0
Get-ADUser -identity ADACCOUNT | Select-object @{Name="Identity";Expression={$_.SamAccountName}} | Get-MailboxStatistics

何らかの理由で、Identityパラメーターは値によるパイプ入力を受け取らず、プロパティ名のみを受け取ります。したがって、それを機能させるために、Identityのパラメーター名と一致するようにデータにパイプされた名前を変更することができます。次に、Get-MailboxStatisticsは、パイプラインを介してデータをフィードするデータを処理する方法を最終的に認識します。

于 2013-07-08T18:45:03.393 に答える