HI,
I am having issues with my script that cannot get the path from certain files/folders. When running this script I get the foollowing error.
Get-ChildItem : The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.
Others files/folders it does the job but I would like to know how to handle this and avoiding to give me this erro please.
After enabling the long file paths in Windows it still does not work.
If I add this **\\?** in the path variable, it failes saying that there are Illegal characters in path even if I add -LiteralPath.
This is what I have:
#Message to user
Write-Output "`nThis script will collect the FilePathName, Name, RelativePath and the Hash of the files/folders you have chosen."
"`nAt the end, it will tell you how long it took to run the script"
Read-Host -Prompt "`nPress ENTER to continue or CTRL+C to quit"
#Counting the time from the beginning
$starttime = (Get-Date)
#Variables
#Can only be added 3 paths maximum. If added more than 3 it may change the relatrive path
$root = "C:\mypath"
#Variable for creating the CSV File
$report = "mycsvfile.csv"
#Process for generating the HASH
$hasher = [System.Security.Cryptography.SHA256]::Create()
$AllFiles = @()
"`n"#line space
Write-Host "Generating the Hash from $root"
#Getting information from directories
foreach ($file in get-childitem $root -recurse | Select-Object FullName, Directory, Name, PSIsContainer, Length)
{
$acl = get-acl $file.fullname | select-object owner,accesstostring,group
$obj = new-object psObject
#Generating HASH File
if(!$file.PsIsContainer)
{
$relativePath = $file.FullName.Substring($root.Length)
Write-Host "Debug $relativePath" -ForegroundColor Green
$inputStream = New-Object IO.StreamReader $file.fullname
$hashBytes = $hasher.ComputeHash($inputStream.BaseStream)
$inputStream.Close()
$builder = New-Object System.Text.StringBuilder
$hashBytes | Foreach-Object { [void] $builder.Append($_.ToString("X2")) }
#Add info into CSV FILE
$obj | Add-Member -membertype noteproperty -name FilePathandName -Value $file.FullName
$obj | Add-Member -membertype noteproperty -name Name -Value $file.Name
$obj | Add-Member -MemberType noteproperty -Name RelativePath -Value $relativePath #-force
$obj | Add-Member -MemberType noteproperty -Name Hash -Value $builder.ToString()
#$obj | Add-Member -membertype noteproperty -name CreationTime -Value $file.CreationTime
#$obj | Add-Member -MemberType noteproperty -Name LastAccessTime -Value $file.LastAccessTime
#$obj | Add-Member -MemberType noteproperty -Name LastWriteTime -Value $file.LastWriteTime
#Variable to send info to CSV
$AllFiles += $obj
Clear-Variable relativePath
}
Remove-Variable obj
}
#$AllFiles += $obj
#Generating CSV FILE
$AllFiles |Export-Csv $report –NoTypeInformation
"`n"
Write-Host "$report File has been created "
"`n"
Write-Host "The script took:`n"
$endTime = Get-Date
New-TimeSpan -Start $startTime -End $endTime
Could someone help me on this please? I am really struggling with this.
Thank you