Sunt nou aici și mă confrunt cu probleme cu scriptul meu Powershell cu căi lungi.
Acest script își propune să obțină calea relativă și hash din fișiere/foldere și subfolderele sale. Funcționează cu unii cu alții, primesc următoarea eroare:
Get-ChildItem : Calea specificată, numele fișierului sau ambele sunt prea lungi. Numele de fișier complet calificat trebuie să aibă mai puțin de 260 de caractere, iar numele directorului trebuie să aibă mai puțin de 248 de caractere.
Aș dori să știu cum să rezolv acest lucru și să evit să-mi dau această eroare, vă rog.
Am activat căile lungi ale fișierelor în Windows Server 2012 unde rulez scriptul și încă nu funcționează.
Daca adaug asta \\?\ în variabila cale, nu reușește să spună că există caractere ilegale în cale chiar dacă adaug -LiteralPath.
Orice ajutor ar fi grozav
Acesta este scriptul mypowershell:
Scriere-Ieșire „`nAcest script va colecta FilePathName, Name, RelativePath și Hash-ul fișierelor/directoarelor pe care le-ați ales.”
„`nLa final, vă va spune cât timp a durat să rulați scriptul”
Read-Host -Prompt „`nApăsați ENTER pentru a continua sau CTRL+C pentru a ieși”
$starttime = (Get-Date)
$root = "C:\mypath"
$report = "mycsvfile.csv"
$hasher = [System.Security.Cryptography.SHA256]::Create()
$AllFiles = @()
"`n"
Write-Host „Generarea hash-ului de la $root”
foreach ($fișier în get-childitem $root -recurse | Select-Object FullName, Director, Nume, PSIContainer, Lungime)
{
$acl = get-acl $fișier.nume complet | select-object owner,accesstostring,group
$obj = nou-obiect psObject
if(!$file.PsIsContainer)
{
$relativePath = $file.FullName.Substring($root.Length)
Write-Host "Debug $relativePath" -ForegroundColor Green
$inputStream = Nou-Object IO.StreamReader $file.fullname
$hashBytes = $hasher.ComputeHash($inputStream.BaseStream)
$inputStream.Close()
$builder = Obiect nou System.Text.StringBuilder
$hashBytes | Foreach-Object { [void] $builder.Append($_.ToString("X2")) }
$obj | Add-Member -membertype noteproperty -name FilePathandName -Value $file.FullName
$obj | Add-Member -membertype noteproperty -name Nume -Valoare $fișier.Nume
$obj | Add-Member -MemberType noteproperty -Nume RelativePath -Value $relativePath
$obj | Add-Member -MemberType noteproperty -Name Hash -Value $builder.ToString()
$ToateFișierele += $obj
Clear-Variable relativePath
}
Eliminare-Variable obj
}
$AllFiles |Export-Csv $raport âNoTypeInformation
"`n"
Write-Host „Fișierul $report a fost creat”
"`n"
Write-Host „Scriptul a luat:`n”
$endTime = Get-Date
New-TimeSpan -Start $startTime -End $endTime