web-dev-qa-db-ja.com

コマンド#2が各出力で実行されるように、2つのPowershell出力を組み合わせるにはどうすればよいですか?

コマンドを組み合わせたいGet-userおよびget-casmailboxこれにより、最初の出力から「Company」を取得し、後者の「ActiveSyncStatus」を単一の出力に取得できます。

また、明示的なループを記述して目的の結果を生成できることも理解していますが、$ _を使用するとよりコンパクトな構文が可能になると思います。コマンド(または同様のもの)

$ _を使用して2番目のコマンドをフィードするGet-CasMailboxを示すコマンドを誰かに見せてもらえますか。プロパティ、そして最後にコマンド間の属性のいくつかの組み合わせのselect-object?

私が尋ねる理由は、私はしばしばこの方法でコマンドを結合する必要があり、forループは明示的であり、ヘルプデスクがコピーして貼り付けるのが難しいためです。むしろ、貼り付けることができる単一のコマンドラインが必要です。

2

Write-Hostを使用するたびに、JeffreySnoverは子犬を殺します。それともドン・ジョーンズですか?たぶん、彼らはある種の儀式で一緒に子犬を殺します。それは変だろう。

[PS] C:\>"User1", "User2" | % { [PSObject]@{Name=$_; Company=$(Get-User $_).Company; ActiveSyncEnabled=$(Get-CASMailbox $_).ActiveSyncEnabled} }

Name                           Value
----                           -----
Name                           User1
Company                        Contoso
ActiveSyncEnabled              True
Name                           User2
Company                        Woodgrove
ActiveSyncEnabled              True

編集:またはこれ:

[PS] C:\>Foreach($_ In Get-Mailbox) { [PSObject]@{Name=$_; Company=$(Get-User $_).Company; ActiveSyncEnabled=$(Get-CASMailbox $_).ActiveSyncEnabled} }

Exchangeコマンドレットは、パイプライン入力の処理方法に注意を払う必要があります。

出力オブジェクトがぎっしり詰まっていないように見せたい場合は、最後のFormat-Tableの直前の最後に}を追加できます...ただし、Format-*はほぼ同じくらい悪いことに注意してくださいWrite-Hostのように、出力のオブジェクト性を壊す機能があるため、出力を最後に実行するようにフォーマットするだけです。出力をフォーマットしてから、別のコマンドレットにパイプしてみてください。

6
Ryan Ries

PowerShellExchangeと一緒に使用したことはありません。これらのコマンドレットとその出力に慣れていないため、この1つのライナーはあなたが探しているものに近いと思います。

Get-User | foreach { $a = $_.property1; $b = Get-CASMailbox -SomeProperty $_.property2; Write-Host "$a | $b" }
1
slybloty