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