从正在运行的 exe 中,如何轻松确定该 exe 是否是从 powershell 调用的?我还没有找到作为可靠指标的预定义环境变量。
我的具体问题是,我试图通过创建一个破坏当前环境变量的“运行器”.bat/.ps1 从 exe(一个 Go 静态链接的 exe)修改现有 PS 会话中的 PATH 和其他环境变量运行 cmd.exe 或 PS。如果从 PS 调用 exe,我将创建一个 .ps1。如果从 cmd.exe 调用 exe,我将创建一个 .bat。理想情况下,我会使用具有以下内容的 .bat 来处理 PS:
rem This doesn't work
powershell -C "& { $env:FAKE_PATH_2='C:\ruby193\bin' }"
rem This also doesn't work
powershell -C "& { [Environment]::SetEnvironmentVariable('FAKE_PATH_3', 'Sneaky 1') }"
rem This also doesn't work
powershell -C [Environment]::SetEnvironmentVariable('FAKE_PATH_4', 'Sneaky 2')
但以上都没有将环境变量传播到现有的 PS 会话。我正在寻找一种不需要包装器 .bat/.ps1 脚本来设置和调用 exe 的解决方案。
有什么创造性的、低复杂性的想法吗?