我想运行这样的内容:
$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
扩展@nishaygoyal答案。在PowerShell中运行可执行文件(例如docker)与在CMD提示符下运行可执行文件不同。在PowerShell中,参数以字符串数组
您定义它的方式,docker cp
实际上将$cp_arguments
视为1个字符串,这就是为什么它抱怨2个参数的原因,请看下面]]
docker cp "iar_build_container:C:/docker_work/IAR/Debug $docker_artifacts/Debug"