Необычная проблема здесь! Я выполняю 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 символов?
Спасибо за любую помощь!