PowerShell删除列标题

时间:2014-06-12 23:24:55

标签: powershell-v3.0 export-to-csv

我有以下代码,可以从根路径向CSV文件导出文件夹权限:

$RootPath = "\\R9N2WRN\Test Folder"
$OutFile = "C:\CodeOutput\Permissions.csv"
$Header = "Folder Path,IdentityReference"
Del $OutFile
Add-Content -Value $Header -Path $OutFile 

$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true}
foreach ($Folder in $Folders)
{
    $ACLs = get-acl $Folder.fullname | 
    ForEach-Object { $_.Access  } | 
    Where {$_.IdentityReference -notlike "*BUILTIN*" -and $_.IdentityReference -notlike "*NT AUTHORITY*"}
    Foreach ($ACL in $ACLs)
        {
        $OutInfo = $Folder.Fullname + "," + $ACL.IdentityReference
        Add-Content -Value $OutInfo -Path $OutFile
        }
}

输出文件具有列标题"文件夹路径"和#34; IdentityReference",并且因为我想在多个根路径上运行此脚本,有没有办法摆脱那些列标题与输出一起发送到CSV文件?

2 个答案:

答案 0 :(得分:6)

我知道这是一篇旧帖并已得到回复,但认为这可能对其他人有所帮助。

我当时想要做类似的事情,但不想将输出写入文件,读取,然后重写。所以我这样做了:

Your_Data_In_Pipe | ConvertTo-Csv -NoTypeInformation | select -Skip 1 | Set-Content File_Without_Headers.csv

答案 1 :(得分:2)

您可以做的事情是使用Export-CSV标志运行-Append,包括第一次

Your_Data_In_Pipe | Export-Csv Your_File.csv -Append -NoTypeInformation

如果您确实要删除CSV文件的第一行,可以使用:

Get-Content Your_File.csv | select -Skip 1 | Set-Content Your_FileBis.csv