PowerShell中的Docker cp参数扩展

问题描述 投票:0回答:2

我想运行这样的内容:

$docker_container_name = "iar_build_container"
...
$cp_arguments =  $docker_container_name + ":C:/docker_work/IAR/Debug " + $docker_artifacts + "/Debug"

"Copying out the build artifacts: $cp_arguments"
docker cp "$cp_arguments"

此输出为:

Copying out the build artifacts: iar_build_container:C:/docker_work/IAR/Debug ./docker_artifacts/Debug
"docker cp" requires exactly 2 arguments.
See 'docker cp --help'.

Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

Copy files/folders between a container and the local filesystem

如果我对docker cp命令进行硬编码,并且使用以下命令,它将起作用:

docker cp iar_build_container:C:/docker_work/IAR/Debug $docker_artifacts/Debug

所以我在扩展第一个参数即容器名称和冒号时遇到问题。

编辑:这可行,但是感觉很hacky:

$cp_arguments = "cp " + $docker_container_name + ":C:/docker_work/IAR/Debug " + `
                        $docker_artifacts + "/Debug"

"Copying out the build artifacts: $cp_arguments"
Start-Process -FilePath "docker" -ArgumentList "$cp_arguments" -Wait
powershell docker docker-for-windows docker-cp
2个回答
1
投票

扩展@nishaygoyal答案。在PowerShell中运行可执行文件(例如docker)与在CMD提示符下运行可执行文件不同。在PowerShell中,参数以字符串数组


1
投票

您定义它的方式,docker cp实际上将$cp_arguments视为1个字符串,这就是为什么它抱怨2个参数的原因,请看下面]]

docker cp "iar_build_container:C:/docker_work/IAR/Debug $docker_artifacts/Debug"
© www.soinside.com 2019 - 2024. All rights reserved.