これは、LOCALSERVER で 2.3 分で完了します。
A: measure-command {$x = invoke-command {gci -recurse "C:\"}}
これは、LOCALSERVER で 38.4 分で完了します。
B: measure-command {$x = invoke-command -comp LOCALSERVER {gci -recurse "C:\"}}
なぜBはそんなに遅いのですか? hereで説明されているように、「出力が XML にシリアル化されてから、再びオブジェクトに再構成されている」ためで、A ではなく B でしょうか? それとも何か他のことが起こっていますか?
LOCALSERVER は、PS v3 で Windows 2008R2 を実行します。どちらの場合$x.count
も 98973 です。
リモート サーバーでのファイル検索に PSRemoting を使用するように既存のスクリプトを変更することについて疑問に思っていました。リモート ターゲットで gci を実行すると、検索が早く終了するのではないかと考えました。いくつかのテストでは、PSRemoting を使用した方が実際の検索の実行時間が長くなりました。ループバック シナリオについて尋ねているのは、それが最も単純なケースのように思えたからです。リモート サーバーでも同様の結果が得られました。したがって、次のような UNC パス検索に固執します。
gci -recurse \\REMOTESERVER\C$\folder
...これらの結果が奇妙に思えない場合や、リモート処理の構成または構文を調整することでパフォーマンスが大幅に向上する可能性がある場合を除きます。