PowerShell의 카피 항목의 컨테이너 주장의 의미는 무엇입니까?
-
02-07-2019 - |
문제
PowerShell의 대본을 쓰고 있습니다. 이 스크립트를 사용합니다 Copy-Item
명령. 이 명령에 대한 선택적인 주장 중 하나는 "-container
". 인수에 대한 문서는이 인수를 지정하는 것을 명시하고있다.
나는 복사 작업 중에 보존되지 않은 컨테이너 객체를 원하는 마지막 사람이 될 것이기 때문에 이것은 모두 훌륭합니다. 그러나 모든 진지함 에서이 주장은 무엇을합니까? 특히 디스크 디렉토리 트리를 한 곳에서 다른 곳으로 복사하는 경우, 이것이의 동작에 어떤 차이가 있습니까? Copy-Item
명령?
해결책
문서가 말하는 컨테이너는 폴더 구조입니다. 재귀 사본을 수행하고 폴더 구조를 보존하려면 -Container 스위치를 사용합니다. (참고 : 기본적으로 -Container 스위치가 True로 설정되어 있으므로 실제로 지정할 필요가 없습니다. 끄기를 원한다면 사용할 수 있습니다. -container: $false
.)
이에 대한 캐치가 있습니다 ... 디렉토리 목록을 작성하고 복사 항목으로 파이프하면 폴더 구조가 보존되지 않습니다. 폴더 구조를 보존하려면 -path 속성과 -recurse 스위치를 지정해야합니다.
다른 팁
나도 문서가 도움이되지 않는 것을 발견했습니다. 나는 어떻게 테스트를했는지 확인했다 -Container
매개 변수는 함께 작동합니다 -Recurse
파일과 폴더를 복사 할 때.
주목하십시오 -Container
수단 -Container: $true
.
이것은 내가 예제에 사용한 파일 구조입니다.
# X:.
# ├───destination
# └───source
# │ source.1.txt
# │ source.2.txt
# │
# └───source.1
# source.1.1.txt
- 모든 예를 들어 현재 위치 (PWD)는 다음과 같습니다.
X:\
. - PowerShell 4.0을 사용했습니다.
1) 소스 폴더 만 복사하려면 (빈 폴더) :
Copy-Item -Path source -Destination .\destination
Copy-Item -Path source -Destination .\destination -Container
# X:.
# ├───destination
# │ └───source
# └───source (...)
다음은 오류가 발생합니다.
Copy-Item -Path source -Destination .\destination -Container: $false
# Exception: Container cannot be copied to another container.
# The -Recurse or -Container parameter is not specified.
2) 전체 폴더 구조를 파일로 복사하려면 :
Copy-Item -Path source -Destination .\destination -Recurse
Copy-Item -Path source -Destination .\destination -Recurse -Container
# X:.
# ├───destination
# │ └───source
# │ │ source.1.txt
# │ │ source.2.txt
# │ │
# │ └───source.1
# │ source.1.1.txt
# └───source (...)
3) 모든 자손 (파일 및 폴더)을 단일 폴더로 복사하려면 :
Copy-Item -Path source -Destination .\destination -Recurse -Container: $false
# X:.
# ├───destination
# │ │ source.1.1.txt
# │ │ source.1.txt
# │ │ source.2.txt
# │ │
# │ └───source.1
# └───source (...)