在這裏出現異常問題!我在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