I need the Powershell to find URL lengths greater than 260 characters, I've tried using scripts from both the sites below. 1 doesn't output to a text file and the other tries to locate all files in the top level site and anything beneath it even when i specify a certain URL such as http://site1/subsite/siteb
https://sharepointnomad.wordpress.com/2010/07/31/locating-files-and-pages-with-urls-that-are-too-long-for-sharepoint/
http://www.nikcraik.ca/extract-sharepoint-files-with-long-names/
# Call this script as below # powershell C:\scripts\url.ps1 "http://spdev/sandbox" # This script enumerates all files at the specified URL, # and outputs full URL for each file, # along with the length of the URL. # define EnumPages function function EnumPages { param ($URL, $objFolder) # enumerate files in the root folder foreach ($file in $objFolder.Files) { $result = "OK" $output = $URL + "/" + $objFolder.URL + "/" + $file.Name #$output, $URL ";" ,$objFolder.URL ,$file.Name |Out-File C:\Scripts\files.csv -append # evaluate string length if ($output.length -ge 260) { $result = "TOO LONG" } # write output # write-output $output, ";" , $output.length, ";" $result, ";" $output ,$output.length,$result |Out-File C:\Scripts\files.csv -append } # enumerate subfolders foreach ($subfolder in $objFolder.SubFolders) { EnumPages $URL $subfolder } } # begin script body [System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | out-null $siteURL = $args[0] # create a new SPSite object $site=new-object Microsoft.SharePoint.SPSite("http://sitename/site/project1") $web = $site.OpenWeb() # enumerate files in the Rootweb foreach ($file in $site.Rootweb.Files) { $result = "OK" $output = $site.Rootweb.URL + "/" + $file.Name #$output| Export-Csv c:/scripts/test.csv -NoTypeInformation if ($output.length -ge 260) { $result = "TOO LONG" } #write-host $output, ";", $output.length, ";" , $result $output ,$output.length,$result |Out-File C:\longfilenames\files.csv -append } # enumerate folders in the Rootweb foreach ($folder in $site.Rootweb.Folders) { EnumPages $site.Rootweb.URL $folder } # enumerate subsites foreach ($web in $site.Allwebs) { # enumerate files in the root web foreach ($file in $web.Files) { $result = "OK" $output = $web.URL + "/" + $file.Name if ($output.length -ge 260) { $result = "TOO LONG" } #write-host $output, ";", $output.length, ";" , $result $output ,$output.length,$result |Out-File C:\Scripts\files.csv -append } # enumerate folders foreach ($folder in $web.Folders) { EnumPages $web.URL $folder } } $site.Dispose(); ##ENFORCED DISPOSAL!!!