想象一下,您正在用高级语言编写程序,不允许您进行自定义系统调用(win32 API),因为代码是交叉编译的,或者语言不支持。
当您的进程在Windows上运行时,是否有办法了解您是否在PowerShell内运行而不是cmd.exe?反之亦然?
我试图打印"我正在使用PowerShell"和#34;我在cmd.exe"中运行来自该计划。
在这种情况下,我在Golang中编写程序,但这并不重要,因为我不想遍历进程树。
答案 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,你真正想知道的。