Script Powershell para analisar o CSV para obter a propriedade do arquivo

3

Eu preciso do dono dos arquivos que tenho na lista .CSV como o caminho absoluto da pasta, de forma que eu adicione o resultado na coluna secundária, que lista o dono dos arquivos.

Obrigado antecipadamente.

A primeira coluna do CSV:

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

A segunda coluna não é nenhuma, mas gostaria que fosse:

Username1
Username2
.
.
.
Username99
    
por Senior Systems Engineer 20.06.2013 / 02:30

2 respostas

4

Se você tiver apenas uma lista de arquivos separados por linha, não é um arquivo csv - é apenas um arquivo de texto.

Você pode verificar se cada arquivo existe e usar Get-Acl para fornecer as informações de propriedade :

$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
    
por 20.06.2013 / 03:02
3

Você pode usar Select-Object e uma propriedade calculada para gerar o CSV.

Observe que sua pergunta indica que não há cabeçalho no arquivo CSV de origem. Estou adicionando os títulos de "Arquivo" e "Proprietário" à saída.

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

Tags