C# PSHostUserInterface和Windows 10/PowerShell 5.0

C# PSHostUserInterface和Windows 10/PowerShell 5.0,c#,.net,powershell,windows-10,C#,.net,Powershell,Windows 10,我们目前正在开发一个承载PowerShell运行空间/管道并执行PowerShell脚本的应用程序。现在我和我的同事注意到了一些我们无法解释的事情 PSHostUserInterface接口公开将控制台输出写入,特别是在本例中,写入(控制台颜色,控制台颜色,字符串),写入(字符串)以及写入线(控制台颜色,控制台颜色,字符串),写入线(字符串)和写入线() 脚本向PowerShell主机(例如简单的编写主机“Hello World!”)写入内容时,将立即调用这些方法。现在的问题是,在我和我同事的P

我们目前正在开发一个承载PowerShell运行空间/管道并执行PowerShell脚本的应用程序。现在我和我的同事注意到了一些我们无法解释的事情

PSHostUserInterface接口公开将控制台输出写入,特别是在本例中,
写入(控制台颜色,控制台颜色,字符串)
写入(字符串)
以及
写入线(控制台颜色,控制台颜色,字符串)
写入线(字符串)
写入线()

脚本向PowerShell主机(例如简单的
编写主机“Hello World!”
)写入内容时,将立即调用这些方法。现在的问题是,在我和我同事的PC上运行单元测试时,我们的代码表现不同。区别似乎在于我最近升级到了Windows 10(PowerShell 5.0),而他仍在运行Windows 8.1(PowerShell 4.0)。(这正是我们认为的原因,但也可能是其他原因)。该项目使用.NET4.5.1运行

它们的行为方式如下:

Windows 8.1(PowerShell 4.0)

Write主机“Hello World!”
->调用/触发
Write(控制台颜色、控制台颜色、字符串)
首先使用for-/backgroundcolor和字符串值(Hello World!),然后使用颜色和空字符串值(应表示换行符)调用/触发
WriteLine(控制台颜色、控制台颜色、字符串)

Write Host“Hello World!-NoNewLine
->仅使用for-/backgroundcolor和字符串值(Hello World!)调用/触发
Write(控制台颜色、控制台颜色、字符串)

Windows 10(PowerShell 5.0)

编写主机“你好,世界!“
->调用/触发
WriteLine(ConsoleColor,ConsoleColor,String)
仅使用for-/backgroundcolor和字符串值(Hello World!)。也没有附加换行符

编写主机“你好,世界!“-NoNewLine
->调用/触发
WriteLine(控制台颜色、控制台颜色、字符串)
仅带有for-/backgroundcolor和字符串值(Hello World!)。这里也没有换行符(当然不应该是)


这是一个基本问题。在Windows 8.1下,框架似乎正在执行并触发写入主机cmdlet的正确方法,但与Windows 10/PowerShell 5.0不同。我们只是讨论回车,但在将输出写入列表并使用该列表进行进一步处理时,我相信大多数人都可以想象一下这是一个问题


有人经历过同样的行为吗?这是新PowerShell中的一个bug吗?为什么会发生这种情况?

我觉得这听起来像个bug。我有一个承载PowerShell的应用程序,它会受到影响…不幸的是,我还不能玩v5,否则我会调查并报告。所以基本上区别在于写入/写入(新行)改为writeline?writeline不会像第二次写的那样处理新行吗?我知道这是不同的,但似乎会有相同的结果。我也这么认为,我在MS论坛上发布了相同的问题-也许我会在那里得到一些反馈。但我也会报告给Connect,谢谢你的提示。顺便说一句,我正在运行一个自定义主机在PowerShell 5.0中,写入主机处理似乎没有改变。我现在没有运行调试器,但是当我使用写入主机“test”时,我得到了一个换行符。如果我说-NoNewLine,我没有。在我看来,它的工作原理与4.0一样。