ฉันใหม่ที่นี่และฉันประสบปัญหากับสคริปต์ PowerShell ที่มีเส้นทางยาว
สคริปต์นี้มีจุดมุ่งหมายเพื่อรับเส้นทางสัมพัทธ์และแฮชจากไฟล์/โฟลเดอร์และโฟลเดอร์ย่อย มันใช้งานได้กับบางคน ฉันได้รับข้อผิดพลาดต่อไปนี้:
Get-ChildItem : พาธ ชื่อไฟล์ หรือทั้งสองอย่างที่ระบุยาวเกินไป ชื่อไฟล์แบบเต็มต้องน้อยกว่า 260 อักขระ และชื่อไดเร็กทอรีต้องน้อยกว่า 248 อักขระ
ฉันต้องการทราบวิธีจัดการกับสิ่งนี้และหลีกเลี่ยงการให้ข้อผิดพลาดนี้แก่ฉัน
ฉันได้เปิดใช้งานเส้นทางไฟล์แบบยาวใน Windows Server 2012 ซึ่งฉันกำลังเรียกใช้สคริปต์ แต่ก็ยังใช้งานไม่ได้
ถ้าฉันเพิ่มสิ่งนี้ \\?\ ในตัวแปรพาธ มันล้มเหลวโดยบอกว่ามีอักขระที่ผิดกฎหมายในพาธ แม้ว่าฉันจะเพิ่ม -LiteralPath ก็ตาม
ความช่วยเหลือใด ๆ จะดีมาก
นี่คือสคริปต์ mypowershell:
#ข้อความถึงผู้ใช้
Write-Output "`nสคริปต์นี้จะรวบรวม FilePathName, Name, RelativePath และแฮชของไฟล์/โฟลเดอร์ที่คุณเลือก"
"`nในตอนท้าย มันจะบอกคุณว่าใช้เวลานานเท่าใดในการรันสคริปต์"
Read-Host - พร้อมท์ "`nPress ENTER เพื่อดำเนินการต่อหรือ CTRL+C เพื่อออก"
#นับเวลาจากจุดเริ่มต้น
$starttime = (วันที่รับ)
#ตัวแปร
#สามารถเพิ่มได้สูงสุด 3 เส้นทางเท่านั้น หากเพิ่มมากกว่า 3 อาจเปลี่ยนเส้นทางญาติ
$root = "C:\mypath"
#Variable สำหรับสร้างไฟล์ CSV
$report = "mycsvfile.csv"
#กระบวนการสร้าง HASH
$hasher = [System.Security.Cryptography.SHA256]::สร้าง()
$AllFiles = @()
"`n"#line space
เขียนโฮสต์ "สร้างแฮชจาก $root"
#รับข้อมูลจากไดเร็กทอรี
foreach (ไฟล์ $ ใน get-childitem $root -recurse | Select-Object FullName, Directory, Name, PSIsContainer, Length)
{
$acl = get-acl $file.fullname | เลือกเจ้าของวัตถุ accesstostring กลุ่ม
$obj = วัตถุใหม่ psObject
#กำลังสร้างไฟล์ HASH
ถ้า(!$file.PsIsContainer)
{
$relativePath = $file.FullName.Substring($root.Length)
โฮสต์เขียน "Debug $relativePath" -ForegroundColor Green
$inputStream = New-Object IO.StreamReader $file.fullname
$hashBytes = $hasher.ComputeHash($inputStream.BaseStream)
$inputStream.ปิด()
$builder = New-Object System.Text.StringBuilder
$hashBytes | Foreach-Object { [void] $builder.Append($_.ToString("X2")) }
#เพิ่มข้อมูลลงในไฟล์ CSV
$obj | Add-Member -membertype noteproperty -ชื่อ FilePahandName -Value $file.FullName
$obj | เพิ่มสมาชิก -membertype noteproperty -name Name -Value $file.Name
$obj | เพิ่มสมาชิก -MemberType noteproperty -Name RelativePath -Value $relativePath #-force
$obj | เพิ่มสมาชิก -MemberType noteproperty -Name Hash -Value $builder.ToString()
#$obj | เพิ่มสมาชิก -membertype noteproperty -name CreationTime -Value $file.CreationTime
#$obj | เพิ่มสมาชิก -MemberType noteproperty -ชื่อ LastAccessTime -ค่า $file.LastAccessTime
#$obj | เพิ่มสมาชิก -MemberType noteproperty -ชื่อ LastWriteTime -Value $file.LastWriteTime
#Variable เพื่อส่งข้อมูลไปยัง CSV
$AllFiles += $obj
เส้นทางสัมพัทธ์ของตัวแปรที่ชัดเจน
}
ลบตัวแปร obj
}
#$ไฟล์ทั้งหมด += $obj
#สร้างไฟล์ CSV
$AllFiles | ส่งออก Csv $report âNoTypeInformation
"`น"
Write-Host "สร้างไฟล์ $report แล้ว"
"`น"
พิธีกรนักเขียน "บทพาไป:`n"
$endTime = รับวันที่
ช่วงเวลาใหม่ - เริ่ม $startTime - สิ้นสุด $endTime