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

标签 powershell command-line cmd

我正在创建一个标准的 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/

相关文章:

c# - 等到多个命令行进程完成?

python - 运行 python 脚本,但指向另一个 python 安装

curl - 如何启动 Mintty 并运行脚本文件?

azure - 使用服务主体身份验证从 azure 函数读取 AD 组

git - .gitignore 不会停止在文件中跟踪更改

networking - 如何在Server 2008中共享和授予对文件夹和内部文件夹的完全访问权限

windows - %USERPROFILE% 空间错误

windows - 在远程机器上创建私有(private)消息队列

powershell - 如何比较文件中的两个顺序字符串

powershell - 将两次或多次调用 Get-ChildItem 的结果加入一个数组的最简洁方法是什么?