9

UsersA-B、UsersC-Dなどで始まるExchange情報ストアがあり、その後、その命名規則の範囲外にあるものもあります。

$allIS = Get-MailboxDatabase |
             Where { $_.name -notlike "*Users*" } |
             Select Identity

現在のユーザーの情報ストアを検索してから、$allIS配列で比較を試みます。一致する場合は、何らかのアクションを実行します。

たとえば、$ allIS [0]の値を出力すると、が返されます@{Identity=MSCCR\CEO\CEO}

これらの変換された文字列を別の配列にスローしてから、比較を行いたいと思います。これは、比較するインフォメーションストアの動的リストを持つことです。しかし、おそらくこれは最善で最も効率的な方法ではありません。ここでリンゴとオレンジを比較しているので、この比較を試みるための最良の方法は何でしょうか?

4

3 に答える 3

12

2番目の部分を見ずにそれを最適化できるかどうかを判断するのは難しいです...

しかし、IDのフラット配列を取得するのは非常に簡単です。-ExpandPropertyselectで使用するか、 foreach { $_.Identity }selectの代わりに使用します。

$allIS = Get-MailboxDatabase | ? { $_.name -notlike "*Users*" } | select -expand Identity
$allIS = Get-MailboxDatabase | ? { $_.Name -notlike '*Users*' | foreach { $_.Identity}
于 2012-06-13T17:29:06.170 に答える
1

PowerShellyの方法

$isNames = @()
$allIS = Get-MailboxDatabase | 
    Where { $_.name -notlike "*Users*" } | 
    Select Identity | 
    %{ $isNames += $_.name }

foreach代わりにを使用して、出力をループにパイプします%

より手続き的な方法

$isNames = @()

foreach ($is in $allIS)
{
    $isNames += $is.identity
}

これにより、オブジェクトではなく文字列として、インフォメーションストアの名前のみの単純な配列が得られます。

于 2012-06-13T16:47:36.380 に答える
0

「プロパティ逆参照演算子」を使用しようとした場合'。' 配列クラスのメンバーではないプロパティの場合、代わりに配列の各要素を逆参照します。

$allIS = (Get-MailboxDatabase | ? { $_.name -notlike "*Users*" }).Identity
于 2016-07-20T19:44:44.593 に答える