答案1
CMD 是 Windows NT 中的 Windows 命令 shell,早于 Windows 9x/ME 时代的 WinNT,MS-DOS shell“command.com”已经存在,并且与 MS-DOS 紧密集成。CMD 是基于字符串的,那里的所有内容(输入和输出)都是字符串,就像 Bash 一样。它有一些内部命令,也可以执行外部命令。它有助于进行一般故障排除。
Powershell 于 2005 年首次发布,名为 Monad。Powershell 是一个基于 .NET、面向对象、跨平台和开源(2016 年)的现代 shell。Powershell 目前已取代 CMD 成为默认命令 shell。它具有强大的内部命令,称为 Command-Lets,简称 CMDLets。它与 .NET 和 COM 对象、C#、Windows 窗体、Windows Presentation Framework、Active Directory、VB.NET、Windows API、Azure、Office 365、SharePoint online 等直接集成,这也最大限度地减少了对 Windows Script Host 和 VBScript 的需求。与其他 shell 不同,在 powershell 中,包括输入/输出在内的所有内容都是 NET 对象的集合。它支持高级编程功能,例如更好的错误处理、正则表达式、Foreach 循环等,而 Batch 不支持这些功能。它具有可导入的模块,其中包含许多执行相同工作类型的 cmdlet。
所以:
CMD 是一个旧的基于文本的命令 shell,从技术上讲它是一种编程语言,但没有更好的功能,而 Powershell 是面向对象的现代 shell,具有现代高级编程语言等高级功能
Powershell 与 Windows 的不同方面紧密集成,并且它也已为 Linux 发布并且它是开源的,而 CMD 是专有的并且只能在 Windows NT 中使用(在非 NT 版本中,您需要使用 command.com)
Powershell 的功能和能力范围比 CMD/Batch 强大得多。
所以,我的意见是您现在应该使用 Powershell 而不是 Batch。
答案2
命令提示符和以前的计算时代
在 MS-DOS 和 Windows 3.1 时代,命令提示符曾经是启动计算机时首先看到的东西。它仍然是 Windows 的一部分,证明了 Windows 操作系统用户多年来享有的向后兼容性。许多应用程序、安装程序和高级用户仍然使用命令提示符来修改系统、运行批处理脚本和获取系统信息。
Powershell:系统管理员的下一代工具
Windows PowerShell 是一种用于系统管理任务的命令 shell 和脚本语言。它建立在 .NET 框架之上,后者是 Microsoft 于 2002 年开发的软件编程平台。[1]
PowerShell 命令或 cmdlet 可帮助您管理 Windows 基础架构。此外,它们还使用户能够远程访问系统上的注册表、文件系统和 Windows 管理规范 (WMI) 空间。此外,PowerShell 命令 shell 使您能够创建具有多个条件的复杂脚本。[1]
PowerShell 使用 cmdlet,它们是独立的编程对象,可公开 Windows 内部的底层管理选项。在 PowerShell 出现之前,系统管理员需要通过 GUI 来查找这些选项,无法重复使用单击菜单来大规模更改选项的工作流程。[2]
主要区别
[Cmd] 是一个非常古老的工具,从未用于远程系统管理。扩展其功能需要其他实用程序,例如 Microsoft Sysinternals PsExec。[1]
另一方面,PowerShell 提供了许多 cmdlet 来简化系统管理任务。它支持各种任务的自动化,例如 Active Directory 管理、用户和权限管理以及提取有关安全配置的数据。此外,PowerShell 现在支持 Linux。[1]
下表从编程和操作角度总结了命令提示符和 PowerShell 之间的主要区别:[1]