如何将单个PowerShell输出字符串放入cmd变量?

时间:2014-02-11 15:36:52

标签: batch-file powershell cmd

我有一个PowerShell脚本,可输出单个字符串值。我有一个cmd批处理脚本,需要执行PowerShell脚本并将该单个PowerShell输出值放入批处理脚本中的变量中。我找到了各种导出到文件或读取文件的方法,但这不是我想要的。谢谢!

(编辑)这是我正在尝试使用它的地方(响应发布脚本):

@echo off
REM The next line puts the .ps1 output into the variable
REM and, obviously, this does not work
set pass_word=<C:\temp\PullPassword.ps1
tabcmd login -s "http://myserver.net" -u mylogon -p %pass_word%

(编辑) 我在这里看到OP的答案 Getting Powershell variable value in batch script ,还看了foxdrive的答案,所以我开始玩FOR ... DO语句。我认为我对cmd非常好,并且无法弄清楚为什么我的工作不起作用:

for /f "delims=" %%a in ('powershell . "C:\temp\PullPassword.ps1"') do set val=%%a
echo  %a% 

当我在另一篇文章中看到foxdrive的完整答案时,它让我感到震惊:%a%错了,我需要%val%!哦,惭愧!以下作品:

@echo off
set mypath=C:\temp\PullPassword.ps1
for /f "delims=" %%a in ('powershell . "C:\temp\PullPassword.ps1"') do set pass_word=%%a 
tabcmd login -s "http://myserver.net" -u mylogon -p %pass_word%

所以我会相信它到期的地方并且标记foxdrive的答案是正确的,即使这是另一篇澄清我的错误的帖子。

1 个答案:

答案 0 :(得分:2)

这可能有所帮助:它期望powershell脚本将文本输出到STDOUT,这是它出现的正常位置。

@echo off
for /f "delims=" %%a in (' powershell "script.ps1" ') do set "var=%%a"