2008-09-24 14 views
23

MS PowerShell 용 스크립트를 작성하고 있습니다. 이 스크립트는 Copy-Item 명령을 사용합니다. 이 명령의 선택적 인수 중 하나는 "-container"입니다. 인수에 대한 설명에이 인수를 지정하면 "복사 작업 중 컨테이너 개체가 유지됩니다."Powershell의 Copy-Item의 -container 인수는 무엇을 의미합니까?

복사 작업 중에 예약되지 않은 컨테이너 개체를 가장 먼저 원하는 사람이되기 때문에이 모든 것이 훌륭합니다. 그러나 모든 진지하게이 논증은 무엇을합니까? 특히 한 곳에서 다른 곳으로 디스크 디렉토리 트리를 복사하는 경우, 이것은 Copy-Item 명령의 동작과 어떤 차이가 있습니까?

답변

22

문서가 말하는 컨테이너는 폴더 구조입니다. 재귀 복사본을 만들고 폴더 구조를 유지하려면 -container 스위치를 사용합니다. (참고 : 기본적으로 -container 스위치는 true로 설정되어 있으므로 실제로 지정하지 않아도됩니다.이 스위치를 끄려면 -container: $false을 사용하십시오.)

디렉토리 목록을 작성하고 Copy-Item으로 파이프하면 폴더 구조가 보존되지 않습니다. 폴더 구조를 보존하려면 -path 등록 정보와 -recurse 스위치를 지정해야합니다.

+0

합니다. 고맙습니다! –

+3

-container는 스위치이므로 값 전달을 위해':'가 필요합니다. '-container : $ false'. –

34

도 도움이되는 설명서가 없습니다. 파일 및 폴더를 복사 할 때 매개 변수가 -Recurse과 함께 작동하는 방식을 확인하기 위해 몇 가지 테스트를 수행했습니다.

-Container-Container: $true을 의미합니다. 모든 예는

# X:. 
# ├───destination 
# └───source 
#  │ source.1.txt 
#  │ source.2.txt 
#  │ 
#  └───source.1 
#    source.1.1.txt 
  • , 현재 위치 (PWD)를 X:\이다

    이 제가

    실시 예에 사용 된 파일 구조이다.
  • PowerShell 4.0을 사용했습니다. 전체를 복사하려면)

    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 
    Copy-Item -Path source -Destination .\destination -Container 
    # X:. 
    # ├───destination 
    # │ └───source 
    # └───source (...) 
    

    :


1)은 단지 소스 폴더 (빈 폴더)를 복사하려면 파일이 포함 된 폴더 구조 :

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 (...) 
+4

이 답변은 더 많은 표를 얻으실 수 있습니다. 그것은 상상력을 남기지 않습니다. +1 –