Windows PowerShell: Get-FileHash 및 긴 파일 경로

Windows PowerShell: Get-FileHash 및 긴 파일 경로

OS는 윈도우 10이다.

저는 PowerShell의 "Get-FileHash" 명령을 사용하여 다음과 같이 해당 폴더 내에서 파일의 MD5 체크섬을 직접 생성합니다.

PS Z:\Test> Get-FileHash 'test.txt' -algorithm MD5                                                                      
Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             D41D8CD98F00B204E9800998ECF8427E                                       Z:\Test\test.txt

그러나 긴 파일 경로가 포함된 경우 PowerShell은 Get-FileHash를 통해 파일을 찾을 수 없는 것 같습니다.

PS Z:\Test loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong> Get-FileHash 'looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong.txt' -algorithm MD5                                                                                                                Resolve-Path : Cannot find path 'Z:\Test looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooooooooooooooooooooooooooooooooooooooong\looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
oooong.txt' because it does not exist.
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Utility\Microsoft.PowerShell.Utility.psm1:11
0 char:36
+                 $pathsToProcess += Resolve-Path $Path | Foreach-Objec ...
+                                    ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Z:\Test loooooo...ooooooooong.txt:String) [Resolve-Path], ItemNotFoundE
   xception
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.ResolvePathCommand

반면에 "Get-ChildItem"을 사용하면 파일을 완벽하게 찾을 수 있습니다.

PS Z:\Test loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong> Get-ChildItem


    Directory: Z:\Test looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    oooooooooooooooooooooooooong


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024-02-26     12:55              0 loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
                                                  ooooooooooong.txt

이러한 경우 MD5:s를 어떻게 생성합니까? 관리 권한이 없습니다.

답변1

다음과 같이 \\?\경로 앞에 추가하고 매개변수를 사용하여 확장 길이 경로를 지정할 수 있습니다 .-LiteralPath

# local path
Get-FileHash -LiteralPath '\\?\C:\long\path\to\file.txt'

# network share
Get-FileHash -LiteralPath '\\?\UNC\server\share\folder\file.txt'

이렇게 하면 대부분의 프로그램이 긴 경로 이름을 허용하고 관리자 권한이 필요하지 않습니다.

자세한 내용은 여기에서 답변을 확인하세요.https://stackoverflow.com/a/21194605/7411885

관련 정보