我正在创建一个标准的 Windows BAT/CMD 文件,我想创建一个 IF 语句来检查这个 CMD 文件是否是从 PowerShell 运行的。我怎样才能做到这一点?
编辑:我的根本问题是 test.cmd "A=B"
结果 %1==A=B
从 CMD 运行但 %1==A
和 %2==B
从 PowerShell 运行时。在这两种情况下,脚本本身实际上都是作为旧的 Windows 命令行脚本运行的,因此检查 Get-ChildItem 将始终产生错误。
最佳答案
一种方法,它查看您的进程名称是什么,然后检查其属性:
title=test
tasklist /v /fo csv | findstr /i "test"
只要您使用唯一的名称代替 Test,就不会出现错误。
你会得到类似的东西:
"cmd.exe","15144","Console","1","3,284 K","Running","GNCID6101\Athomsfere","0:00:00","test"
当我从 bat 文件运行上面的代码时,我的输出是:
"powershell.exe","7396","Console","1","50,972 K","Running","GNCID6101\Athomsfere","0:00:00","
关于powershell - 如何从命令行检测我是否在 powershell 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16372912/