我试图使用myPowershellScript.ps1的返回值作为批处理文件中的变量。
myPowershellScript.ps1
function GetLatestText
{
return "Hello World"
}
我试着用For /F函数。可能有更好的方法。
myBatch.bat
for /f "delims=" %%a in (' powershell -command "\\Rossi2\Shared\myPowershellScript.ps1" ') do set "var=%%a"
echo %var%
所需的输出是在cmd窗口中输出“Hello World”。
我试着使用批处理文件,因为一些旧进程使用它们。对于较新的进程,我在PowerShell中做所有事情,它工作得很好。
当前输出为空白。
2条答案
按热度按时间ckx4rj1h1#
powershell.exe
(Windows PowerShell CLI)的-File
参数比-Command
参数更健壮。-File
与-Command
的信息,请参见this answer。Get-LatestText
,但没有 * 调用 * 它,因此脚本不会产生输出。Get-LatestText
的显式调用放在函数定义 * 之后 *;如果要传递脚本接收的任何参数,请使用Get-LatestText @args
. <script>
),然后调用函数(这 * 确实 * 需要-Command
):[1]
for /f
* 逐行 * 循环命令输出(忽略空行),因此对于多行输出,只有 * 最后 * 行将存储在%var%
中-需要更多的工作来处理多行输出。lnlaulya2#
您可以将批处理和powershell合并到一个文件中(保存为
.bat
):