在79个字符后,Powershell的PHP输出中出现空格

时间:2012-03-04 00:25:49

标签: php powershell echo

这里有不寻常的问题!我正在PHP中执行Powershell。下面是一个示例,我们将Powershell命令的输出捕获到$ query:

$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 echos $ query。在每个Write-Output“行”上,PHP似乎在第79个字符(或空格)之后插入一个空格或某种换行符。有时候,这与一个空间重合,所以它并不值得注意,但有时候它就在这个词的中间。例如,当$ logFile的值为:

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中回复“ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJGHLJKLMNOPQRSTUVWXYZ”并查看源代码,它将出现在一行而没有上面的中断。

我遇到了wordwrap功能,但看不出这会有什么帮助。不太确定目前发生了什么......

编辑:这可能与80个字符宽的Powershell控制台的默认缓冲区大小有关吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你已经有了自己的答案,但是当我遇到同样的问题时(这是我在StackOverflow上发现的,如果内存为我提供的话),这里是我添加到脚本中的代码:

if ($Host -and $Host.UI -and $Host.UI.RawUI) 
{
    $rawUI = $Host.UI.RawUI
    $oldSize = $rawUI.BufferSize
    $typeName = $oldSize.GetType().FullName
    $newSize = New-Object $typeName (500, $oldSize.Height)
    $rawUI.BufferSize = $newSize
}