🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

与PowerShell的区别:为何你该告别cmd?

在本系列的前几篇文章中,我们学习了Windows传统命令行工具——命令提示符(cmd.exe)的历史、基本用法,甚至还涉及了简单的自动化。它的简洁性以及至今仍为兼容性而存在的状态,可以说就是Windows历史本身。

但与此同时,我们也知道有一个更现代、更强大的工具——“PowerShell”。想必很多人会有这样的疑问:“cmd的基本用法我懂了,但到底应不应该换成PowerShell呢?”、“我想了解更多具体的优点”。

这篇文章就是为你准备的“毕业指南”。让我们一边怀念命令提示符这本“毕业纪念册”,一边通过比较,彻底讲解为何当今的Web开发者应该迈向PowerShell这个“新舞台”,并为你揭示那些决定性且具体的原因。读完本文时,你打开终端的手,想必会自然而然地伸向PowerShell的图标。


比较1:“搜索”所需信息的能力 - 文本的局限与对象的潜力

两者最根本的区别在于,命令的执行结果是“纯文本字符串”还是“结构化对象”。这个差异在实际应用中会产生多大的差距呢?让我们通过一个具体的任务来看看。

挑战:“找出‘我的文档’文件夹中最大的5个文件”

在命令提示符(cmd)中的尝试

如果想用cmd来完成这个任务,过程会相当曲折。虽然可以用 dir /s 列出文件列表,但其结果只是一堆纯文本。要从中提取出文件大小的部分,再将其作为数值正确排序,并显示前5个……这需要运用复杂的 for /f 循环和字符串操作,是一个非常高级且容易出错的任务。

也就是说,cmd虽然能让“人眼看懂并判断”,但并不适合“让程序复用结果以进行更高级的处理”。

在PowerShell中的漂亮解决方案

另一方面,PowerShell只需一行流畅的命令就能解决这个任务,如行云流水般顺畅。

Get-ChildItem -Path "C:\Users\YourName\Documents" -File -Recurse | Sort-Object -Property Length -Descending | Select-Object -First 5

这一行命令所做的事情如下:

  1. Get-ChildItem: 首先,获取指定文件夹内的所有文件和文件夹作为“对象”。
  2. |: 将获取到的对象集合通过管道(pipe)传递给下一个命令。
  3. Sort-Object: 将传递过来的对象,按文件大小(Length属性)从大到小(-Descending)进行排序。
  4. |: 将排序后的结果再次传递给下一个命令。
  5. Select-Object: 从传递过来的对象中,只选出并显示开头的5个(-First 5)。

无需费力地解析文本,而是通过属性自由地处理结构化数据。这正是PowerShell被称为“强大”的最大原因。


比较2:与外部“协作”的能力 - 能否调用API

在现代Web开发中,我们经常需要从外部API(应用程序编程接口)获取数据来使用。例如,获取某个Web服务的信息,或是抓取天气预报数据。

挑战:“使用GitHub API获取微软的用户信息,并显示其公开仓库的数量”

在命令提示符(cmd)中的挑战

cmd本身没有内置访问网络并解析JSON这类数据的功能。要实现这一点,需要另外安装像 curl 这样的外部工具,并且还需要用其他方法来处理获取到的JSON文本,非常麻烦。

在PowerShell中的简单解决方案

PowerShell内置了一个名为 Invoke-RestMethod 的强大cmdlet。它是一个非常出色的工具,可以访问Web API,并自动将返回的JSON数据转换成PowerShell对象。

首先,从API获取数据并存入变量。

$gitHubUser = Invoke-RestMethod -Uri "https://api.github.com/users/microsoft"

仅需如此,接下来只需访问对象的属性即可。

Write-Host "用户名: $($gitHubUser.name)"
Write-Host "公开仓库数: $($gitHubUser.public_repos)"

就像访问本地数据一样,我们能以 .name.public_repos 的形式轻松访问网络上的信息。这种与外部服务的协作能力,是cmd所不具备的、PowerShell压倒性的优势。


总结:我们为何应该告别cmd

正如我们所见,PowerShell并不仅仅是命令提示符的后继者。它是一个为了执行现代任务而从根本上重新设计的、拥有全新理念的工具。

你应当从cmd迁移到PowerShell的理由非常明确:

掌握命令提示符的知识对于理解Windows的历史绝非无用。但是,作为一名Web开发者或IT专业人士,如果想在未来提高生产力,迁移到更强大、更现代的工具——PowerShell,将是最明智的投资。

cmd.exe入门系列到此结束。如果本系列能帮助你克服对“小黑窗”的恐惧,并让你了解到命令行的真正力量,我们将倍感荣幸。谢谢大家!