如何使Powershell ISE支持颜色和非ascii字符



下面是我在项目目录中运行某个grunt任务时Windows PowerShell的一些示例输出:

Done, without errors.

Execution Time (2015-08-25 01:57:14 UTC)
loading tasks                9ms  ██████ 17%
loading grunt-contrib-copy  23ms  ███████████████ 43%
copy:styles                 20ms  █████████████ 38%
Total 53ms
Running "autoprefixer:server" (autoprefixer) task
Autoprefixer's process() method is deprecated and will removed in next major release. Use postcss([autoprefixe
r]).process() instead
File .tmp/styles/main.css created.

"Done, without errors"为绿色,".tmp/styles/main.css"为青色。

在Powershell ISE中运行相同的命令,结果如下:

[32mDone, without errors.[39m

Execution Time (2015-08-25 01:58:40 UTC)
loading tasks                9ms  ███████ 20%
loading grunt-contrib-copy  20ms  ████████████████ 45%
copy:styles                 14ms  ███████████ 32%
Total 44ms
[4mRunning "autoprefixer:server" (autoprefixer) task[24m
grunt : Autoprefixer's process() method is deprecated and will removed in next major release. Use 
postcss([autoprefixer]).process() instead
At line:1 char:1
+ grunt serve
+ ~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (Autoprefixer's ...ocess() instead:String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError
File .tmp/styles/main.css created.

颜色不能正确解释,非ascii字符也不能正确解释。

我已经试着寻找一个解决办法,但没有成功。如何使PowerShell ISE更像PowerShell?PS ISE似乎只是普通PS的包装,但肯定还有更多。

更新:看到这篇文章说"控制台应用程序输出不丰富多彩"。这是否意味着没有办法通过PowerShell ISE获得类似PowerShell的输出?

我想问你为什么要在PowerShell ISE中开始工作。是否只是为了在开发/调试时看到正确的输出,而在powershell.exe中完成正常的执行?

如果是这样,你可以把这个放在你的脚本的顶部:

if ($Host.Name -like '*ISE*') {
    Start-Process -FilePath powershell.exe -ArgumentList '-NoExit','-ExecutionPolicy',(Get-ExecutionPolicy),'-File',$PSCommandPath
    return
}

基本上,无论何时从ISE中运行脚本,它都会在新的powershell控制台主机中运行脚本。

出于好奇,你是在使用git-bash之类的东西吗?对我来说,这些颜色字符看起来像Bash的颜色字符,ISE使用cmd.exe作为它的主机(我相信)。

相关内容

  • 没有找到相关文章

最新更新