在Powershell中执行环境变量时如何传递参数?

How to pass arguments when executing environment variable in Powershell?

我正在尝试将命名参数传递给使用 Windows 中的环境变量引用的批处理文件。环境变量是 .bat 文件的直接路径,可以使用 $env:MY_VAR 在 Powershell 中轻松执行,它会立即打印批处理的完整路径。 但是,如果我尝试传递参数,Powershell 将抱怨意外的标记。我试过的是:

$env:MY_VAR -data some_data.txt -other more_data.txt

$env:MY_VAR --data some_data.txt --other more_data.txt

$env:MY_VAR --data=some_data.txt --other=more_data.txt

$env:MY_VAR -data=some_data.txt -other=more_data.txt

还有更多...我还尝试将我的值封装在引号中,以防与它们的命名有关。 None 其中有效,但如果我使用直接路径:

FULL_PATH/program.bat -data some_data.txt -other more_data.txt

它会工作得很好。 Powershell 是否以某种特定方式解释环境变量,需要以不同方式传递参数?我的 Google 搜索没有产生任何有用的结果,而且大多数人试图从批处理脚本中启动 Powershell...这不是我要找的。我也遇到过 Powershell 的扩展,但这似乎是一个奇怪的解决方案。

欢迎并感谢任何帮助。

您需要使用 & 调用运算符来告诉 powershell 您传递的字符串是要调用的命令:

& $env:MY_VAR -data some_data.txt -other more_data.txt

有关详细信息,请参阅 this page

环境变量只是一个字符串。如果你想执行变量中的内容,首先需要告诉 PowerShell 这就是你想要的。为此,您可以使用 &.

& $env:MY_VAR some_data.txt more_data.txt