2008-09-24 47 views
23

我正在爲MS PowerShell編寫腳本。該腳本使用Copy-Item命令。此命令的一個可選參數是「-container」。該參數的文檔指出,指定此參數「在複製操作過程中保留容器對象。」Powershell的Copy-Item的-container參數是什麼意思?

這是一切都很好,因爲我將是在複製操作過程中想要不當的容器對象的最後一個人。但是,非常認真地說,這個論點有什麼作用?特別是在我將磁盤目錄樹從一個地方複製到另一個地方的情況下,這對Copy-Item命令的行爲有什麼影響?

回答

22

文檔討論的容器是文件夾結構。如果您正在執行遞歸副本並希望保留文件夾結構,則可以使用-container開關。 (注意:默認情況下,-container開關設置爲true,所以你真的不會需要指定它如果你想關閉它,你可以使用-container: $false。)

有一個catch到這個...如果您執行目錄列表並將其管道複製到項目,它將不會保留文件夾結構。如果要保留文件夾結構,則必須指定-path屬性和-recurse開關。

+0

這是非常清楚的。謝謝! – 2008-09-24 20:03:25

+3

-container是一個開關,所以它需要`:`傳遞值。 `-container:$ false`。 – 2013-02-03 15:21:34

34

我也發現文檔不夠有幫助。我做了一些測試,看看在複製文件和文件夾時-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 (...) 
相關問題