在批处理脚本中获取Powershellvariables值

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

sample.ps1

$myname="user1" 

sample.bat

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

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

 .value') was unexpected at this time. 

但是,如果我在PowerShell中执行如下,我能够得到正确的输出。

 . "D:\sample.ps1"; (Get-Variable myname).value 

我想知道如何在批处理脚本中绕过Get-Variable命令的圆括号。 或者想知道任何其他方式来获取批处理脚本中导出的powershellvariables的值。

Solutions Collecting From Web of "在批处理脚本中获取Powershellvariables值"

如果没有更多的信息,我无法测试,但看看是否有帮助:

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

移动了从评论部分昨天添加的答案。

我已经解决了! 我不得不逃避右括号和分号。 添加转义字符后,我收到了一个不同的错误。

 SET VAL=Get-Variable : Cannot find a variable with name 'myname'. 

工作命令如下…

 FOR /F "delims=" %%i IN ('powershell . "D:\sample.ps1"^; (Get-Variable myname^).value') DO SET VAL=%%i 

@foxidrive谢谢你的回答,它也工作。