【发布时间】:2017-02-17 12:58:53
【问题描述】:
我有一个输出视频文件持续时间的 powershell 脚本。运行这个脚本会给我预期的结果。
$Folder = 'C:\my\path\to\folder'
$File = 'sample1_1280_720.mp4'
$LengthColumn = 27
$objShell = New-Object -ComObject Shell.Application
$objFolder = $objShell.Namespace($Folder)
$objFile = $objFolder.ParseName($File)
$Length = $objFolder.GetDetailsOf($objFile, $LengthColumn)
Write-Output $Length
在一个 php 文件中,我试图将此输出保存到一个变量中。
<?php
$var = shell_exec("powershell -File C:\my\path\to\psFile.ps1 2>&1");
echo "<pre>$var</pre>";
?>
我从 shell_exec 得到的字符串输出是你从 cmd 启动 powershell 时看到的文本。 Windows PowerShell 版权所有 (C) 2016 微软公司。保留所有权利。 有关如何提取视频时长的任何建议?
【问题讨论】:
-
如果在
shell_exec()的PowerShell 命令中添加-NoLogo会发生什么? -
"powershell -NoLogo -File ..." - 给出相同的输出
-
这表明
shell_exec()处理您传递的命令行的方式有点……奇怪。如果您在脚本中添加代码以将结果输出到文件中,该文件是否已创建并包含您期望的内容? -
是的,这是我已经成功测试过的备份计划。使用
| Out-File -FilePath C:\... -Append进行管道传输。结果如果不存在则创建一个文件,否则追加。
标签: php powershell shell-exec