2012-03-04 6 views
1

ここに異常な問題があります!私はPHP内からPowerShellを実行しています。ここでは、$クエリにPowerShellコマンドの出力をキャプチャする例です。PowershellのPHP出力にスペースが79文字で表示されます

$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エコー$クエリが問題になります。すべての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で「ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZを」エコーとソースコードを表示した場合、それは上記の休憩なしで1つの行に表示されます。

私はwordwrap関数を見つけましたが、これがどのように役立つか分かりませんでした。現時点で何が起こっているのかは分かりません...

EDIT:これは、Powershellコンソールのデフォルトのbuffersizeを80文字幅にすることと関係がありますか?

ありがとうございました! (メモリが私を提供する場合、私はStackOverflowの上で見つかったものを)

+1

コンソール出力のワードラッピング。 – Furgas

+0

cmd.exeのデフォルトのウィンドウサイズは80文字です。 –

+0

はい、それでした。すべての質問を入力すると、わかりました。 PowerShellスクリプトの先頭にあるWindowのバッファ幅を増やして解決しました。私は現時点で自己に十分な担当者がいないので、コードを投稿することはできません。 – Robin

答えて

1

あなたはすでにここにあなたの答えを持っていますが、私は同じ問題を抱えているとき、私は私のスクリプトに追加したコードの一部です:私はPowerShellのに賭ける

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 
} 
+0

うん、これは私が(heyscriptingguyから)見つけたものです:) – Robin

関連する問題