在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
我正在尝试将命名参数传递给使用 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