Windows平台的开发者们,是时候抛弃 cmd 了,这篇文章主要介绍了你应该选择 Powershell 的10个理由,需要的朋友可以参考下

Powershell 从 Windows7 时代开始内置于 Windows 系统当中,可以看作是微软对 cmd 的大升级,目前两者并存于 Windows 系统中。

首先强烈推荐一个 powershell 学习网站:

powershell在线教程

1. powershell 更加 “powerful”

微软起“powershell”这个名字虽然有吹牛逼的嫌疑(我以前也这样想),但从事实来看并非如此。powershell 的强大程度分分钟秒杀 Linux 上的 bash,更不要说饱受诟病的 cmd 了。(无意打广告)

2. powershell 全面支持面向对象

powershell 背后依靠的是一套完整的 .NET 编程体系,其脚本更容易编写且稳健性大大提升。反过来看 cmd,那些完全由各种命令堆砌而成的一条条指令简直就是“小打小闹”。

3. 从 cmd 迁移到 powershell 成本几乎为零

如果你对老朋友 cmd 充满情怀,无法舍弃,完全无妨!因为 powershell 可以看作 cmd 的超集,所有的常用命令诸如dir, cd, ipconfig等在 powershell 中都能直接使用。但背后的实现方式是完全不同的,powershell 基于完全的面向对象,它通过给函数和对象“起别名”的方式来支持这些旧的命令。

4. 诱人的管道操作

管道操作的灵感来自 Linux 的 shell,但由于 powershell 将一切都包装成为对象,而不是直接处理字符串,因此其管道操作的灵活程度远在 Linux 的 shell 之上。

例如:

PS C:\Users\Haley> ls | sort -Descending Name | Format-Table Name,Mode

Name              Mode
----              ----
VirtualBox VMs         d-----
Videos             d-r---
Searches            d-r---
Saved Games          d-r---
Pictures            d-r---
OneDrive            d-r---
Music             d-r---
Links             d-r---

这条命令列出当前路径下的所有文件,按照名称降序排序,并以表格的形式输出,且只显示Name和Mode两个字段。

5. 绝对完备的帮助文档

任何函数与对象都能够通过help *命令来查看其帮助文档(准确来说应该是Get-Help函数,这是更加“面向对象”化的命名方式,而help是它的别名),如果看不明白,加上-examples参数会有应用实例,如果仍看不明白,加上-online参数会打开完整的在线帮助文档,不得不佩服,微软的一条龙服务做的很到位。

例如,关于ls的帮助文档如下:

PS C:\Users\Haley> help ls

名称
  Get-ChildItem

摘要
  Gets the items and child items in one or more specified locations.


语法
  Get-ChildItem [[-Filter] <String>] [-Attributes {ReadOnly | Hidden | System | Directory | Archive | Device | Normal
   | Temporary | SparseFile | ReparsePoint | Compressed | Offline | NotContentIndexed | Encrypted | IntegrityStream |
   NoScrubData}] [-Depth <UInt32>] [-Directory] [-Exclude <String[]>] [-File] [-Force] [-Hidden] [-Include <String[]>
  ] -LiteralPath <String[]> [-Name] [-ReadOnly] [-Recurse] [-System] [-UseTransaction] [<CommonParameters>]

  Get-ChildItem [[-Path] <String[]>] [[-Filter] <String>] [-Attributes {ReadOnly | Hidden | System | Directory | Arch
  ive | Device | Normal | Temporary | SparseFile | ReparsePoint | Compressed | Offline | NotContentIndexed | Encrypte
  d | IntegrityStream | NoScrubData}] [-Depth <UInt32>] [-Directory] [-Exclude <String[]>] [-File] [-Force] [-Hidden]
   [-Include <String[]>] [-Name] [-ReadOnly] [-Recurse] [-System] [-UseTransaction] [<CommonParameters>]


说明
  The Get-ChildItem cmdlet gets the items in one or more specified locations. If the item is a container, it gets the
   items inside the container, known as child items. You can use the Recurse parameter to get items in all child cont
  ainers.

  A location can be a file system location, such as a directory, or a location exposed by a different Windows PowerSh
  ell provider, such as a registry hive or a certificate store.


相关链接
  Online Version: http://go.microsoft.com/fwlink/?LinkId=821580
  Get-Item
  Get-Location
  Get-Process
  Get-PSProvider

备注
  若要查看示例,请键入: "get-help Get-ChildItem -examples".
  有关详细信息,请键入: "get-help Get-ChildItem -detailed".
  若要获取技术信息,请键入: "get-help Get-ChildItem -full".
  有关在线帮助,请键入: "get-help Get-ChildItem -online"

6. 支持基本的数算和数组操作(加减乘除模),打开就能当计算器用

PS C:\Users\Haley> 1 + 1
2
PS C:\Users\Haley> 3 * 5
15
PS C:\Users\Haley> 0xab
171
PS C:\Users\Haley> 1kb
1024
PS C:\Users\Haley> 1mb / 1kb
1024

7. 良好的脚本编程体验

powershell 脚本的语法与高级编程语言非常相近,例如其分支语句if(...){} else{}、循环语句for(...){}与 C 语言别无二致,因而大大提高了编程体验。

8. 拥有丰富的字符串操作对象和函数,全面支持正则表达式

字符串处理是 shell 脚本的主要任务,正则表达式的重要性也无需多说。

9. 支持重定向,读写文件易如反掌

powershell 原生支持将结果导出到html, csv, xml等文件,也可以通过重定向从文件中读取内容。

例如:

PS C:\Users\Haley> ls | Select-Object Mode,Name | Export-Csv ~/desktop/test.csv

这样就把当前目录下的所有 文件名-读写权限 保存到了一个 csv 文件中。

10. 支持 Debug

虽然这个功能很少用到,但支持 debug 是走向完备编程语言不可或缺的一项功能。

最新资讯
周鸿祎C位出道,这一届互联网大佬们的演技谁最好?

周鸿祎C位出道,这一届

现在这群大佬们戏瘾是过足了,那么实实在在的演技到底怎
“加密货币挖矿界亚马逊”Argo上市,欲冲破生死红线

“加密货币挖矿界亚马

矿机商作为加密货币的生产者,现在却要靠资本市场进行变
这款“自主国产”浏览器 再次演绎“科技以换壳为本”

这款“自主国产”浏览

一个神奇的项目。
要把服务器架在太空的海盗湾,为什么能活十五年?

要把服务器架在太空的

海盗湾的出现实际上是对现行不完善的版权制度的对抗。
单枪匹马,陆奇正勇猛地跳向下一个坑

单枪匹马,陆奇正勇猛地

陆奇为什么不像李开复一样自己干,而是借力YC?YC在中国能
马化腾的烦恼:腾讯业务空心化 遭今日头条猛烈冲击

马化腾的烦恼:腾讯业务

成立快20周年的腾讯经历2017年的高歌猛进后,在2018年陷
最新文章
PowerShell使用match操作符来筛选数组

PowerShell使用match

本文介绍PowerShell中使用match操作符,配合正则表达式
PowerShell 语音计算器实现代码

PowerShell 语音计算

带中文发音功能的计算器程序,支持鼠标和小键盘输入,支持
通过DNS TXT记录执行powershell

通过DNS TXT记录执行p

这篇文章主要介绍了通过DNS TXT记录执行powershell的
如何防范PowerShell代码注入漏洞绕过受限语言模式

如何防范PowerShell代

这篇文章主要介绍了如何防范PowerShell代码注入漏洞绕
PowerShell管道入门必看篇(管道例子大全)

PowerShell管道入门必

下面小编就为大家带来一篇PowerShell管道入门必看篇(
使用 powershell 创建虚拟机

使用 powershell 创建

Azure PowerShell 模块用于从 PowerShell 命令行或脚