powershellgetfileversion

Powershell list recursively files attributes to csv


I am trying to fill a csv file with all the attributes of the files contained within a folder. I have troubles recovering the fileversion & assembly

$arr = @()
gci C:\Temp -recurse | ? {$_.PSIsContainer -eq $False} | % {
$obj = New-Object PSObject
$obj | Add-Member NoteProperty Directory $_.DirectoryName
$obj | Add-Member NoteProperty Name $_.Name
$obj | Add-Member NoteProperty Size (Get-Item $_.Length/1MB)
$obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
$obj | Add-Member NoteProperty LastAccess $_.LastAccessTime 
$obj | Add-Member NoteProperty Extension $_.Extension
$obj | Add-Member NoteProperty Creation $_.CreationTime
$obj | Add-Member NoteProperty LastWrite $_.LastWriteTime
$obj | Add-Member NoteProperty ReadOnly $_.IsReadOnly
$obj | Add-Member NoteProperty FullName $_.FullName
$obj | Add-Member NoteProperty Date (Get-Date -format "yyyy-MM-d HH:mm")
$obj | Add-Member NoteProperty Version ($_.FileVersion)
$obj | Add-Member NoteProperty Assembly ($_.AssemblyVersion)
$arr += $obj
}
$arr | Export-CSV -notypeinformation "c:\temp\File\report.csv"

Solution

  • 1)The issue what you are facing is because of permission. Try running the script in elevated mode(run as administrator). 2)You should not try to save anything under C:\temp folder. Better to create a folder in D:\ or E:\ and put it over there as D:\temp_dump\report.csv 3)if you are putting get-item on the size, then that is not a valid one since you have to pick whatever inside the folder.

    Below Script is working fine.

    ##########################################################
    
    $arr = @()
    $Folder_path="E:\PS"
    
    gci $Folder_path | ? {$_.PSIsContainer -eq $False} | % {
    
    $obj = New-Object PSObject
    
    $obj | Add-Member NoteProperty Directory $_.DirectoryName
    
    $obj | Add-Member NoteProperty Name $_.Name
    
    $obj | Add-Member NoteProperty Size (Get-ChildItem $Folder_path | Measure-Object -property length -sum)
    
    $obj | Add-Member NoteProperty Owner ((Get-ACL $_.FullName).Owner)
    
    $obj | Add-Member NoteProperty LastAccess $_.LastAccessTime 
    
    $obj | Add-Member NoteProperty Extension $_.Extension
    
    $obj | Add-Member NoteProperty Creation $_.CreationTime
    
    $obj | Add-Member NoteProperty LastWrite $_.LastWriteTime
    
    $obj | Add-Member NoteProperty ReadOnly $_.IsReadOnly
    
    $obj | Add-Member NoteProperty FullName $_.FullName
    
    $obj | Add-Member NoteProperty Date (Get-Date -format "yyyy-MM-d HH:mm")
    
    $obj | Add-Member NoteProperty Version ($_.FileVersion)
    
    $obj | Add-Member NoteProperty Assembly ($_.AssemblyVersion)
    
    $arr += $obj
    
    }
    
    $arr | Export-CSV -notypeinformation "E:\report.csv"
    
    #