我正在编写一个MS PowerShell脚本。此脚本使用Copy-Item
命令。该命令的可选参数之一为"-container
"。该参数的文档说明指出,指定此参数可以“在复制操作期间保留容器对象”。
这很好,因为我肯定不想在复制操作期间丢失容器对象。但认真地说,这个参数具体是做什么用的呢?特别是在我从一个位置拷贝磁盘目录树到另一个位置的情况下,这个参数对Copy-Item
命令的行为有什么影响吗?
我正在编写一个MS PowerShell脚本。此脚本使用Copy-Item
命令。该命令的可选参数之一为"-container
"。该参数的文档说明指出,指定此参数可以“在复制操作期间保留容器对象”。
这很好,因为我肯定不想在复制操作期间丢失容器对象。但认真地说,这个参数具体是做什么用的呢?特别是在我从一个位置拷贝磁盘目录树到另一个位置的情况下,这个参数对Copy-Item
命令的行为有什么影响吗?
我也发现文档不是很有帮助。我进行了一些测试,看看在复制文件和文件夹时-Container
参数与-Recurse
如何协同工作。
请注意,-Container
意味着-Container: $true
。
这是我用于示例的文件结构:
# X:.
# ├───destination
# └───source
# │ source.1.txt
# │ source.2.txt
# │
# └───source.1
# source.1.1.txt
X:\
。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 (...)
-container: $false
。)