在批处理脚本中获取Powershell变量值

var*_*eda 4 windows powershell cmd batch-file

我想在批处理脚本中获取导出的powershell变量的值。以下是示例脚本。

样本.ps1

$myname="user1"
Run Code Online (Sandbox Code Playgroud)

sample.bat

@echo on
FOR /F "delims=" %%i IN ('powershell . "D:\sample.ps1"; (Get-Variable myname).value') DO SET VAL=%%i
echo %VAL%
pause
Run Code Online (Sandbox Code Playgroud)

在执行sample.bat时,我总是遇到错误。

.value') was unexpected at this time.
Run Code Online (Sandbox Code Playgroud)

但是,如果我在powershell中像下面那样执行,则可以得到正确的输出。

. "D:\sample.ps1"; (Get-Variable myname).value
Run Code Online (Sandbox Code Playgroud)

我想知道如何在批处理脚本中转义围绕Get-Variable命令的括号。或者想知道任何其他方法来获取批处理脚本中导出的powershell变量的值。

fox*_*ive 5

没有更多信息,我将无法对此进行测试,但是请问这是否有帮助:

@echo on
FOR /F "delims=" %%i IN ('"powershell . "D:\sample.ps1"; (Get-Variable myname).value"') DO SET VAL=%%i
echo %VAL%
pause
Run Code Online (Sandbox Code Playgroud)