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 是走向完备编程语言不可或缺的一项功能。

最新资讯
快手CEO宿华:5G时代短视频高带宽低延迟 且立体多维

快手CEO宿华:5G时代短

第五届世界互联网大会“物联网:连接无处不在”主题论坛
贾跃亭轰走了恒大的出纳 许家印急了

贾跃亭轰走了恒大的出

FF91还造得出来么?
AI商业化之谜:波士顿动力背后的恐惧与渴望

AI商业化之谜:波士顿动

新科技的出现将带给人们以怎样的未来?
特斯拉董事会提名COO Robyn Denholm出任董事长

特斯拉董事会提名COO

据彭博,特斯拉董事会提名COO Robyn Denholm出任董事长,
新东方俞敏洪:互联网人工智能给教育带来巨大改变

新东方俞敏洪:互联网人

在“企业家代表记者见面会”中,新东方教育集团董事长、
俞敏洪:到今天没有互联网公司把教育真正做好

俞敏洪:到今天没有互联

新东方教育集团董事长俞敏洪认为,互联网会对教育行业产
最新文章
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 命令行或脚