繁体   English   中英

从PowerShell脚本识别新的Windows Terminal

[英]Recognize the new Windows Terminal from a PowerShell script

我正在编写一个新的PowerShell脚本,并且想使用unicode表情符号,新的Windows Terminal Preview现在支持这些表情符号。 但是,对于运行不支持它的“旧版” PowerShell的用户,我不希望显示无法识别的字符,而是希望向他显示其他一些文本/符号。

更简单地说-我想知道我的PS脚本何时在新的Terminal中运行,并为其他PS终端显示一件事,并显示其他内容。

我尝试使用$env:TERM_PROGRAM 如果我使用的是vscode PS终端内部,它将返回“ vscode”,但是在普通PS终端或新终端下,它将不返回任何内容。

有任何想法吗?

Windows Terminal仍处于起步阶段,无法识别它,但是我注意到它添加了一个环境变量WT_SESSION,您可以尝试检查一下:

if ($env:WT_SESSION) {
     "I am in Windows Terminal"
} else {
     "Nothing to see here..."
}

作为不依赖于环境的其他答案的替代方法,您可以检查终端可执行文件的进程父堆栈:

$isTerminal = {
    $p = Get-CimInstance -ClassName Win32_Process -Filter ProcessID=$PID
    while ($p) {
        ($p = Get-CimInstance -ClassName Win32_Process -Filter ProcessID=$($p.ParentProcessID) -ErrorAction Ignore)
    }
}.Invoke().Name -contains 'WindowsTerminal.exe'

这是我用来确定我是否处于圆锥状态的一种方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM