首页 > 解决方案 > 如何检测来宾 Windows 解释器:cmd 或 powershell?

问题描述

我正在开发一个 go CLI 工具,它可以在不同的操作系统中触发终端命令。

我对 Windows 10 不太了解,所以我会问你这个基本问题:如何检测我的二进制文件在哪种 Windows shell 上运行?(cmd或powershell)。

我想知道通过读取环境变量是否可行。

我可以看到一组潜在的候选人,特别是PSSessionOptionPSSesionConfigurationName

在此处输入图像描述

在 cmd 方面,有SESSIONNAMEand ComSpec

在此处输入图像描述

在此处输入图像描述

标签: windowspowershellgocmd

解决方案


这对我有用:

package main
import "os"

func main() {
   if os.Getenv("PROMPT") != "" {
      println("Command Prompt")
   } else {
      println("PowerShell")
   }
}

或这个:

if _, ok := os.LookupEnv("PROMPT"); ok {

虽然,正如其他人所说,这可能不是一个好主意,不管你想做什么。无论您尝试编写什么.bat.ps1脚本,您都可以直接使用 Go 来完成。Go 程序对您的系统的访问权限与其他类型几乎相同。


推荐阅读