하위 항목 가져오기 및 공백 없음
파일 서버에서 작업하는 동안 스크립트가 손상된 하나의 이상한 폴더를 발견했습니다.폴더의 이름은 ASCII 값 160을 가진 하나의 문자로만 구성됩니다(분할하지 않는 공백, NBSP).시각적으로 해당 이름은 공백 문자와 동일합니다.
간단히 말하자면, 저는.Get-ChildItem
이 폴더에서 실행 중이며 무한 루프에 진입하고 있습니다.실제로 상위 폴더에 대해 명령이 실행되고 문제가 있는 폴더가 다시 반환되어 스크립트가 무한 루프 상태가 되었습니다.
사용자 환경에서 쉽게 시뮬레이션할 수 있습니다.C:\temp
폴더 이름이 NBSP로만 구성된 새 폴더를 만듭니다.숫자 키보드에서 alt를 누른 상태에서 0160을 눌러 입력할 수 있습니다.생성 후 실행
Get-ChildItem C:\Temp\ -Recurse
이름이 없는 폴더 목록이 무한히 표시됩니다. 폴더는 하나뿐입니다.
d----- 6/15/2017 2:20 PM
d----- 6/15/2017 2:20 PM
d----- 6/15/2017 2:20 PM
d----- 6/15/2017 2:20 PM
d----- 6/15/2017 2:20 PM
. . .
서버 및 클라이언트 OS에서 PowerShell 4 및 5를 사용하여 테스트한 결과 동일한 동작을 보였습니다.명령Get-Item
또한 이 이름과 두 스위치 모두에 문제가 모두 있습니다.-Path
그리고.-LiteralPath
같은 방식으로 행동하고 있습니다.저도 노력했어요.[System.IO.Directory]
클래스, 하지만 같은 문제가 있었습니다.
질문:이 이름을 가진 폴더를 오류로 보고하고 건너뛸 수 있도록 스크립트를 업데이트했는데, 더 현명한 방법이 있는지 궁금합니다.내 목표는 달리는 것입니다.Get-ChildItem
또는 해당 폴더와 동등한 폴더입니다.
이것은 알려진 문제입니까?더 많은 사람들이 확인한다면 어딘가에 버그로 보고할 가치가 있습니까?
댓글에 언급된 것처럼, 당신은 곧 수정될 실제 오류를 발견했습니다.
그러나 폴더를 제외할 필요 없이 Get-ChildItem을 계속 사용하면서 최소한의 노력으로 적용할 수 있는 매우 허용 가능한 해결 방법이 있습니다.
유니코드 버전의 Get-ChildItem은 이 문제로 인해 문제가 발생하지 않습니다.(윈도우즈 10 환경의 Powershell 5.1에서 테스트됨) 사용하려면 다음과 같이 하십시오.
Get-ChildItem -Path 'c:\__tmp' -recurse
타고
Get-ChildItem -LiteralPath '\\?\c:\__tmp' -recurse
추가주
UNC를 처리해야 하는 경우 UNC 유니코드 호출이 약간 다릅니다.
Get-ChildItem -LiteralPath '\\?\UNC\127.0.0.1\c$\__tmp' -recurse
이 기능을 사용하여 올바르게 작동합니다.-LiteralPath
매개 변수 대신-Path
.
레퍼런스
Microsoft 설명서에서
-LiteralPath
하나 이상의 위치에 대한 경로를 지정합니다.-Path 매개 변수와 달리 -LiteralPath 매개 변수의 값은 입력한 대로 정확하게 사용됩니다.와일드카드로 해석되는 문자는 없습니다.경로에 이스케이프 문자가 포함된 경우에는 하나의 따옴표로 묶습니다.따옴표 하나를 사용하면 Windows PowerShell에서 문자를 이스케이프 시퀀스로 해석하지 않습니다.
유니코드 접두사 규칙:파일, 경로 및 네임스페이스 이름 지정
보너스 유니코드 호출은 260자 경로 길이 제한을 해결하는 이점도 있습니다: 여기를 참조하십시오.
언급URL : https://stackoverflow.com/questions/44567844/get-childitem-and-non-breaking-space
'programing' 카테고리의 다른 글
커서가 Javascript/jquery를 사용하는 텍스트 삽입 (0) | 2023.08.24 |
---|---|
BeautifulSoup을 사용하여 노드의 자식을 찾는 방법 (0) | 2023.08.24 |
package-lock.json 파일을 .gitignore에 추가해야 합니까? (0) | 2023.08.24 |
사용자 지정 원 단추 (0) | 2023.08.24 |
여러 데이터 파일로 테이블스페이스를 만드는 방법은 무엇입니까? (0) | 2023.08.24 |