Powershell Variable replacement not working from command line
我有以下要从PowerShell运行的命令:
| 1 | docker run -v C:\\src\\docker_certs:/root/.dotnet/https -it MyContainer:MyTag /bin/bash | 
当我运行它时,它运行完美。 (它使用目标文件夹中的源文件夹安装卷。)
但是当我运行此命令时:
| 1 | docker run -v $env:DOCKER_CERTS_PATH:/root/.dotnet/https -it MyContainer:MyTag /bin/bash | 
该卷未安装。
我运行它来检查值:
| 1 | echo $env:DOCKER_CERTS_PATH | 
它返回:
C:\\src\\docker_certs
据我所知,它应该在第二个命令中用C:\\\\ src \\\\ docker_certs替换
如何在运行命令时获取对要替换的环境变量的PowerShell引用?
将环境变量引用包含在
中
| 1 | docker run -v ${env:DOCKER_CERTS_PATH}:/root/.dotnet/https ... | 
或者,
| 1 | docker run -v $env:DOCKER_CERTS_PATH`:/root/.dotnet/https ... | 
关于您尝试过的事情:
docker run -v $env:DOCKER_CERTS_PATH:/root/.dotnet/https ... 
如果您不使用
作为使用
请注意,在这种情况下,您的命令参数将被隐式处理,就像将其括在
有关如何将无引号的令牌解析为命令参数的详细讨论,请参见此答案。
在当前情况下,
由于不存在这样的环境变量(大概),因此
您可以验证
| 1 2 | PS> $env:DOCKER_CERTS_PATH: = 'hi'; $env:DOCKER_CERTS_PATH: hi | 
相反,不允许使用常规(shell)变量包含
| 1 2 | PS> $DOCKER_CERTS_PATH: = 'hi' # BREAKS, even with {...} Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to delimit the name. | 
变量标识符中的第一个
此表示法称为名称空间变量表示法,如本答案所述。