Yes I have rebooted and it still does not work.
This is windows server 2012 as I am transfering some data.
This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
HI,
I am having issues with my script that cannot get the path from certain files/folders.
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.
Here s my current script@
#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
Yes I have rebooted and it still does not work.
This is windows server 2012 as I am transfering some data.
After enabling the long file paths in Windows it still does not work.
Did you reboot?
What OS is this?
After changing the $root for:
$root = \?\C:\mypath"
I get this error which I am confused and not understanding what may wrong in those lines.
get-childitem : Illegal characters in path.
At C:\mypath\myscript.ps1:29 char:19
Export-Csv : Cannot bind argument to parameter 'InputObject' because it is null.
At C:\mypath\myscript.ps1:69 char:13
@Andreas Baumgarten and @MotoX80 Anythoughts on this
Hi @Ed7 ,
Maybe you can try this:
In line 11 modify this $root = "C:\mypath"
to $root = "\\?\C:\mypath"
.
----------
(If the reply was helpful please don't forget to upvote and/or accept as answer, thank you)
Regards
Andreas Baumgarten
Enable long file paths in Windows.
https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/