上記の関数を呼び出すと、読み取っている出力の80列ごとに16進数の0D0Aが返される理由を理解しようとしています。
簡潔にするために、2行のテスト用のPowerShellスクリプトがあります。
$xmlSpew = "<IISAppPoolConfig><DefaultWebSite><ApplicationPoolName>DefaultAppPool</ApplicationPoolName></DefaultWebSite><AuthN>Basic</AuthN></IISAppPoolConfig>"
Write-Output $xmlSpew
次のように、ProcessStartInfoでProcessオブジェクトを使用してスクリプトを呼び出しています。
var psi = new ProcessStartInfo
{
WorkingDirectory = Path.GetDirectoryName(FileToRun),
FileName = FileToRun,
Arguments = Arguments,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
};
var process = new Process
{
StartInfo = psi,
EnableRaisingEvents = true,
};
FileToRunの値は次のとおりです。
C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
引数の値は次のとおりです。
-File "C:\Program Files\MyTest\MyProgInputs\read.d\IISAppPoolConfig.ps1"
スクリプトは正常に実行され、終了コード0が返されますが、次を使用してキャプチャした標準の80文字ごとにこの不思議な(私にとって)0D0A改行があります。
var Stdout = new List<string>;
...
Stdout.Add(process.StandardOutput.ReadToEnd());
これは、文字列varに標準出力を格納すると、XMLの取り組みに大きな打撃を与えます。余分な改行ではなく、ps1スクリプトでstdoutに書き込んだものを正確に取得することを期待していました。
私は何が欠けていますか?この問題を抱えている他の人を探しましたが、答えが見つかりませんでした。うまくいけば、私が検索に挑戦しているのではありません。