Export-CSV
旨在将 PSCustomObjects 作为输入,而不是文本行。
$thisCSV = Get-Acl $path | Select-Object -Expand Access |
Select-Object @{n='Path';e={$path}}, IdentityReference, AccessControlType,
FileSystemRights |
ConvertTo-Csv
该行的输出将类似于:
#TYPE Selected.System.Security.AccessControl.FileSystemAccessRule
"Path","IdentityReference","AccessControlType","FileSystemRights"
"c:\test","BUILTIN\Administrators","Allow","FullControl"
至少三行,一个字符串数组。字符串数组有什么属性?
PS C:\> 'a','b' | Get-Member -MemberType Property
TypeName: System.String
Name MemberType Definition
---- ---------- ----------
Length Property int Length {get;}
长度。您在 CSV 中看到的唯一属性,因为 Export-CSV 正在导出所有属性,而且这是唯一的属性。
修复:删除| ConvertTo-CSV
来自Get-ACL
行,将自定义对象保留为自定义对象,并让导出处理它们的转换。
(这也应该可以修复计数问题,因为每次尝试导出 1+ 行数据时,它不会计算 3+ 行文本)。