Мне нужно получить владельца файлов, список которых у меня есть в файле .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