找出进程是否在cmd.exe或PowerShell窗口中运行

时间:2015-03-28 23:40:09

标签: windows powershell

想象一下,您正在用高级语言编写程序,不允许您进行自定义系统调用(win32 API),因为代码是交叉编译的,或者语言不支持。

当您的进程在Windows上运行时,是否有办法了解您是否在PowerShell内运行而不是cmd.exe?反之亦然?

我试图打印"我正在使用PowerShell"和#34;我在cmd.exe"中运行来自该计划。

在这种情况下,我在Golang中编写程序,但这并不重要,因为我不想遍历进程树。

1 个答案:

答案 0 :(得分:2)

Eryksun可能对此有用,但有一个post about getting the parent process

将以下文本放入ps1脚本中:

$parentpid=(gwmi win32_process -Filter "processid='$pid'").parentprocessid
Write-Host ("I am running in {0}" -f (Get-Process -id $parentpid).Name)

从CMD调用PowerShell运行它:

  

我在cmd中运行

从PowerShell和ISE运行它:

  

我在资源管理器中运行

因此,虽然探险家不是很有用,但我认为不是CMD,你真正想知道的。