我试图理解为什么当我调用上述函数时,我正在阅读的输出中每第 80 列得到十六进制 0D0A。
为了简洁起见,我有一个 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 脚本中写入标准输出的确切内容,而不是额外的换行符。
我错过了什么?我已经寻找其他有这个问题的人,但我没有找到答案。希望不是我受到搜索挑战。