I made this script : $webUrl = "http://site.fr/" $library = "Qualified Information" $spSite = new-object Microsoft.SharePoint.SPSite($webUrl) $w = $spSite.OpenWeb() $l = $w.Lists[$library] $resultHashtable = @{} foreach ($listItem in $l.Items) { Write-Host " Content: " $listItem.ID foreach ($attachment in $listItem.Attachments) { $file = $w.GetFile($listItem.Attachments.UrlPrefix + $attachment) $linkAttachment = "http://site.fr" + $file.ServerRelativeUrl Write-Host "http://site.fr"$file.ServerRelativeUrl if($linkAttachment){ $resultHashtable.Add($listItem.ID, $linkAttachment) } } } #Export CSV $resultHashtable.GetEnumerator() | Sort-Object -Property Name -Descending | Select-Object -Property @{n='SiteURL';e={$_.Name}},Value | Export-Csv -Path Attachments.csv -NoTypeInformation With a SharePoint 2013 it works but with SharePoint 2010, my scripts doesn't the list : >Exception calling "GetFile" with "1" argument(s): "Value does not fall within the expected range." If I debug `$l`, it's null My `Write-Host` Content: `$listItem.ID` just return : `Content:` My list is full of items with attachments, do you have an idea?