如何从命令行检测我是否在PowerShell中?

Nil*_*zor 6 powershell command-line cmd

我正在创建一个标准的Windows BAT/CMD文件,我想制作一个IF语句来检查这个CMD文件是否是从PowerShell运行的.我怎样才能做到这一点?

编辑:我的基本问题是从CMD运行时以及从PowerShell运行时test.cmd "A=B"导致的问题.在这两种情况下,脚本本身实际上都是作为旧的Windows命令行脚本运行的,因此检查Get-ChildItem将始终产生错误.%1==A=B%1==A%2==B

Aus*_*nch 5

一种方法是,查看您的进程名称,然后检查其属性:

title=test
tasklist /v /fo csv | findstr /i "test"
Run Code Online (Sandbox Code Playgroud)

只要您使用唯一名称代替Test,就应该没有错误的余地.

你会得到类似的东西:

"cmd.exe","15144","控制台","1","3,284 K","正在运行","GNCID6101\Athomsfere","0:00:00","测试"

当我从bat文件运行上面的代码时,我的输出是:

"powershell.exe","7396","控制台","1","50,972 K","正在运行","GNCID6101\Athomsfere","0:00:00","