foreach
試みている方法でパイプラインのさらに出力を送信することはできません。各アイテムを個別にエクスポートする必要があります。改訂されたスクリプト (によって返される各アイテムwhere-object
のプロパティをテストするように修正したことに注意してください):PSIsContainer
gci
$rootfolder = Get-ChildItem -recurse -Path [path] | where {$_.PSIsContainer}
foreach ($userdir in $rootfolder) {
get-acl -path $userdir.FullName | export-csv c:\powershell\test.csv -NoTypeInformation -Append
}
ただし、結果にはがっかりされると思います。get-acl
基本的な文字列のコレクションではなく、オブジェクトのコレクションを生成します。たとえばget-acl
、プロファイル ディレクトリで実行すると、次のようになります。
PS C:\Users\ME> get-acl .|select-object access|fl *
Access : {System.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule,
System.Security.AccessControl.FileSystemAccessRule}
上記のスクリプトを実行するAccess
と、CSV の列に表示さSystem.Security.AccessControl.AuthorizationRuleCollection
れるのはコレクションだけです。完全なACLを取得するには、追加の処理を行って、そのコレクションの各要素を引き出す必要があります。コレクションを返す他のフィールドについても繰り返します。