Пробелы появляются в выводе PHP из Powershell после 79 символов - PullRequest
0 голосов
/ 04 марта 2012

Необычная проблема здесь! Я выполняю Powershell из PHP. Вот пример, где мы фиксируем вывод команды 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 отправляет запрос $. В каждой «строке» записи-вывода 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).

Если я открою "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZKZSTB *, вы увидите, что один из них не использует

Я столкнулся с функцией переноса слов, но не мог понять, как это поможет. Не совсем уверен, что происходит в данный момент ...

РЕДАКТИРОВАТЬ: Может быть, это связано с размером буфера по умолчанию для консоли Powershell шириной 80 символов?

Спасибо за любую помощь!

1 Ответ

1 голос
/ 04 марта 2012

У вас уже есть свой ответ, но вот фрагмент кода, который я добавляю в свой скрипт, когда у меня возникает такая же проблема (что-то, что я обнаружил в 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...