2017-08-30 4 views
0

ファイルシステムのインベントリを作成しようとしています。gciとgci -recurveには異なる種類の出力があります。

これは動作しますが、それは

Get-ChildItem \\Server\Share\* | Select-Object @{n='Path';e={ (Get-Item $_.PSPath).FullName }}, PSIsContainer, @{n='Owner';e={ (Get-Acl $_).Owner}}, @{n='Accesstostring';e={ (Get-Acl $_).Accesstostring}} 

私に各エントリのowerとACLを与える。しかし-Recurseを使用すると、私は空の所有者を与え、なぜgciがパイプALON別の何かを送っているん

Get-ChildItem \\Server\Share\ -Recurse | Select-Object @{n='Path';e={ (Get-Item $_.PSPath).FullName }}, PSIsContainer, @{n='Owner';e={ (Get-Acl $_).Owner}}, @{n='Accesstostring';e={ (Get-Acl $_).Accesstostring}} 

をAccesstostring ? これをどのように修正できますか? (メモリに収まらないので配列を作成したくありません)

答えて

2

1つの配列にファイルのリストが含まれていますが、再帰的にディレクトリオブジェクトの配列と各ディレクトリobjectにはファイルのリストが含まれています。 以下のコードは、あなたが望むことをするでしょう。パスにスペースが含まれている場合は、パスを引用符で囲む必要があることに注意してください。

Get-ChildItem \\Server\Share\ -Recurse | Select-Object @{n='Path';e={ $_.FullName }}, PSIsContainer, @{n='Owner';e={ (Get-Acl $_.FullName).Owner}}, @{n='Accesstostring';e={ (Get-Acl $_.FullName).Accesstostring}} 
+0

Get-Aclを一度呼び出すだけで、どのようにスピードアップできますか? –

関連する問題