在这里出现异常问题!我在PHP中执行Powershell。以下是我们将Powershell命令的输出捕获到$查询中的一个示例:在79个字符后出现在PowerShell的PHP输出中的空格
$query = shell_exec("powershell -command $psScriptPath -logFile'$logFile' -param1 '$blah'< NUL");
现在,这在大部分情况下运行良好。 Powershell脚本完成它们的工作,并在其中使用Write-Output将一些数据返回到屏幕/用户,如HTML。例如:
Write-Output "$logFile<br /><br />"
Write-Output "Blah blah some information<br />"
问题出现在PHP回声$查询中。在每一个写输出“行”PHP似乎插入一个空格,或第79个字符(或空白)后的某种类型的换行符。有时候,这与空间不谋而合,所以它不太明显,但其他时候它处于这个词的中间。例如,当$日志文件的价值是:
L:\transcripts\activedirectory\change-display-name\2012-03-03-235201-abcde-admin.txt<br />
它实际上结束了在屏幕上看起来像这样(请注意末尾的空格):
L:\transcripts\activedirectory\change-display-name\2012-03-03-235201-abcde-admi n.txt
望着生成的源代码显示:
L:\transcripts\activedirectory\change-display-name\2012-03-03-235201-itwrm-admi
n.txt<br />
另一个例子是在Powershell的:
Write-Output "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ<br />"
给出:
ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZA
BCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ<br />
就好像PHP是某种包装的文本?或者来自Write-Output的输出将其“发送”回到PHP之前(进入$ query)。
如果我在PHP中回显“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZunder”属于PHP中的ABCDEFGHIJKLMNOPQRSTUVWXYZ并查看源代码,它将出现在上面没有中断的单行上。
我遇到了wordwrap函数,但无法看到这将如何帮助。不太确定此刻发生了什么......
编辑:这可能是与80个字符宽的Powershell控制台的默认缓冲区大小有关吗?
感谢您的帮助!
我打赌PowerShell的控制台包装它的输出。 – Furgas 2012-03-04 00:40:50
cmd.exe的默认窗口大小为80个字符。 – 2012-03-04 00:42:01
是的,就是这样。输入所有的问题让我意识到。我设法通过增加Powershell脚本顶部窗口的缓冲区宽度来解决这个问题。目前我没有足够的代表,因此无法发布代码。 – Robin 2012-03-04 00:45:33