Powershell 脚本解析 CSV 以获取文件所有权

Powershell 脚本解析 CSV 以获取文件所有权

我需要获取文件的所有者,我将 .CSV 文件中的列表作为绝对文件夹路径,以便将结果添加到列出文件所有者的辅助列中。

提前致谢。

CSV 的第一列:

G:\Directory1\file1.zip
H:\Directory3\file4.docx
.
.
.
F:\Directory99\file234324.bat

第二列没有,但我希望它是:

Username1
Username2
.
.
.
Username99

答案1

如果您只有一个以行分隔的文件列表,那么它就不是 csv 文件 - 它只是一个文本文件。

您可以检查每个文件是否存在并使用Get-Acl提供所有权信息:

$files = Get-Content C:\path\to\list.csv
$fileowners = @()
foreach ($file in $files)
{
  if(Test-Path $file -pathType leaf)
  {
    $owner = (Get-Acl $file).Owner
  }
  else
  {
    $owner = "!File not found"
  }
  $fileowner = @{"File"=$file;"Owner"=$owner}
  $fileowners += $fileowner
}
$fileowners | Export-Csv -NoTypeInformation -Path C:\path\to\final.csv

答案2

您可以使用Select-Object计算财产生成 CSV。

请注意,您的问题表明源 CSV 文件中没有标题。我正在将“文件”和“所有者”的标题添加到输出中。

Import-Csv input.csv -Header "File"  |
     Select-Object File, @{ Name = "Owner"; Expression = { ( Get-Acl( Get-Item $_.File ) ).Owner } } |
        Export-Csv -Path output.csv

相关内容