You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Windows PowerShell环境变量传入Docker镜像内的PowerShell脚本?

Windows PowerShell环境变量传递到Docker容器的正确方法

问题根源

你之前的两种命令都存在PowerShell变量解析或Docker参数格式的问题,导致环境变量没有正确传递:

  1. 第一种命令-e $env:MY_VAR=$env:MY_VAR会被PowerShell展开为-e test=test,相当于给容器传递了一个名为test、值为test的环境变量,完全不符合预期。
  2. 第二种命令-e MY_VAR=$env:MY_VAR未用引号包裹,PowerShell的参数解析逻辑会破坏键值对结构,Docker无法识别正确的变量名和值。

正确语法

有两种可行的方式:

方式一:引号包裹键值对

用双引号包裹每个-e参数,让PowerShell先展开环境变量值,再传递完整的键值对给Docker:

docker run -t my-image:latest -e "MY_VAR=$env:MY_VAR" -e "MY_VAR2=$env:MY_VAR2"

方式二:直接传递变量名

如果容器内需要的变量名和当前PowerShell中定义的变量名一致,可以直接指定变量名,Docker会自动读取当前shell的环境变量值:

docker run -t my-image:latest -e MY_VAR -e MY_VAR2

验证

运行上述正确命令后,容器内的run.ps1脚本会输出:

test
test2

同时gci env:*的结果里也能看到MY_VAR和MY_VAR2这两个环境变量。

内容的提问来源于stack exchange,提问作者fandro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:01:10