実行中のexeから、exeがpowershellから呼び出されたかどうかを簡単に判断するにはどうすればよいですか? 信頼できるインジケーターである定義済みの環境変数が見つかりません。
私の特定の問題は、現在の環境変数を台無しにする「ランナー」.bat/.ps1 を作成することにより、既存の PS セッションの PATH およびその他の環境変数を exe (Go の静的にリンクされた exe) から変更しようとしていることです。 cmd.exe または PS を実行しています。exe が PS から呼び出された場合は、.ps1 を作成します。exe が cmd.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 セッションに伝播しません。exe のセットアップと呼び出しにラッパー .bat/.ps1 スクリプトを必要としないソリューションを探しています。
創造的で複雑性の低いアイデアはありますか?