Назад | Перейти на главную страницу

Скрипт Powershell для синтаксического анализа CSV, чтобы получить право собственности на файл

Мне нужно получить владельца файлов, список которых у меня есть в файле .CSV, в качестве абсолютного пути к папке, чтобы я добавил результат во вторичный столбец, в котором перечислены владельцы файлов.

Заранее спасибо.

Первый столбец CSV:

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

Второй столбец отсутствует, но я бы хотел, чтобы он был:

Username1
Username2
.
.
.
Username99

Если у вас просто список файлов, разделенных строками, это не файл 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

Ты можешь использовать 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