Powershell 的 Copy-Item 的 -container 参数的含义是什么?

发布于 2024-07-07 04:34:15 字数 259 浏览 11 评论 0原文

我正在为 MS PowerShell 编写脚本。 该脚本使用Copy-Item 命令。 此命令的可选参数之一是“-container”。 该参数的文档指出,指定该参数“在复制操作期间保留容器对象”。

这一切都很好,因为我是最后一个在复制操作期间想要未保留的容器对象的人。 但严肃地说,这个论证有什么作用呢? 特别是在我将磁盘目录树从一个地方复制到另一个地方的情况下,这对 Copy-Item 命令的行为有何影响?

I am writing a script for MS PowerShell. This script uses the Copy-Item command. One of the optional arguments to this command is "-container". The documentation for the argument states that specifying this argument "Preserves container objects during the copy operation."

This is all well and good, for I would be the last person to want unpreserved container objects during a copy operation. But in all seriousness, what does this argument do? Particularly in the case where I am copying a disk directory tree from one place to another, what difference does this make to the behavior of the Copy-Item command?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

纸短情长 2024-07-14 04:34:15

我也发现该文档没有什么帮助。 我做了一些测试,看看复制文件和文件夹时 -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 (...)

I too found the documentation less than helpful. I did some tests to see how the -Container parameter works in conjunction with -Recurse when copying files and folders.

Note that -Container means -Container: $true.

This is the file structure I used for the examples:

#    X:.
#    ├───destination
#    └───source
#        │   source.1.txt
#        │   source.2.txt
#        │
#        └───source.1
#                source.1.1.txt
  • For all examples, the current location (pwd) is X:\.
  • I used PowerShell 4.0.

1) To copy just the source folder (empty folder):

Copy-Item -Path source -Destination .\destination
Copy-Item -Path source -Destination .\destination -Container
#    X:.
#    ├───destination
#    │   └───source
#    └───source (...)

The following gives an error:

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) To copy the whole folder structure with files:

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) To copy all descendants (files and folders) into a single folder:

Copy-Item -Path source -Destination .\destination -Recurse -Container: $false
#    X:.
#    ├───destination
#    │   │   source.1.1.txt
#    │   │   source.1.txt
#    │   │   source.2.txt
#    │   │
#    │   └───source.1
#    └───source (...)
情定在深秋 2024-07-14 04:34:15

文档中讨论的容器是文件夹结构。 如果您正在进行递归复制并希望保留文件夹结构,则可以使用 -container 开关。 (注意:默认情况下 -container 开关设置为 true,因此您实际上不需要指定它。如果您想将其关闭,可以使用 -container: $false

)一个问题是...如果您执行目录列表并将其通过管道传输到 Copy-Item,它将不会保留文件夹结构。 如果要保留文件夹结构,则必须指定 -path 属性和 -recurse 开关。

The container the documentation is talking about is the folder structure. If you are doing a recursive copy and want to preserve the folder structure, you would use the -container switch. (Note: by default the -container switch is set to true, so you really would not need to specify it. If you wanted to turn it off you could use -container: $false.)

There is a catch to this... if you do a directory listing and pipe it to Copy-Item, it will not preserve the folder structure. If you want to preserve the folder structure, you have to specify the -path property and the -recurse switch.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文