你应该选择 Powershell 的10个理由(抛弃 cmd)
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之上。
例如:
PSC:\Users\Haley>ls|sort-DescendingName|Format-TableName,Mode NameMode -------- VirtualBoxVMsd----- Videosd-r--- Searchesd-r--- SavedGamesd-r--- Picturesd-r--- OneDrived-r--- Musicd-r--- Linksd-r---
这条命令列出当前路径下的所有文件,按照名称降序排序,并以表格的形式输出,且只显示Name和Mode两个字段。
5.绝对完备的帮助文档
任何函数与对象都能够通过help*命令来查看其帮助文档(准确来说应该是Get-Help函数,这是更加“面向对象”化的命名方式,而help是它的别名),如果看不明白,加上-examples参数会有应用实例,如果仍看不明白,加上-online参数会打开完整的在线帮助文档,不得不佩服,微软的一条龙服务做的很到位。
例如,关于ls的帮助文档如下:
PSC:\Users\Haley>helpls 名称 Get-ChildItem 摘要 Getstheitemsandchilditemsinoneormorespecifiedlocations. 语法 Get-ChildItem[[-Filter]][-Attributes{ReadOnly|Hidden|System|Directory|Archive|Device|Normal |Temporary|SparseFile|ReparsePoint|Compressed|Offline|NotContentIndexed|Encrypted|IntegrityStream| NoScrubData}][-Depth ][-Directory][-Exclude ][-File][-Force][-Hidden][-Include ]-LiteralPath [-Name][-ReadOnly][-Recurse][-System][-UseTransaction][ ] Get-ChildItem[[-Path] ][[-Filter] ][-Attributes{ReadOnly|Hidden|System|Directory|Arch ive|Device|Normal|Temporary|SparseFile|ReparsePoint|Compressed|Offline|NotContentIndexed|Encrypte d|IntegrityStream|NoScrubData}][-Depth ][-Directory][-Exclude ][-File][-Force][-Hidden] [-Include ][-Name][-ReadOnly][-Recurse][-System][-UseTransaction][ ] 说明 TheGet-ChildItemcmdletgetstheitemsinoneormorespecifiedlocations.Iftheitemisacontainer,itgetsthe itemsinsidethecontainer,knownaschilditems.YoucanusetheRecurseparametertogetitemsinallchildcont ainers. Alocationcanbeafilesystemlocation,suchasadirectory,oralocationexposedbyadifferentWindowsPowerSh ellprovider,suchasaregistryhiveoracertificatestore. 相关链接 OnlineVersion:http://go.microsoft.com/fwlink/?LinkId=821580 Get-Item Get-Location Get-Process Get-PSProvider 备注 若要查看示例,请键入:"get-helpGet-ChildItem-examples". 有关详细信息,请键入:"get-helpGet-ChildItem-detailed". 若要获取技术信息,请键入:"get-helpGet-ChildItem-full". 有关在线帮助,请键入:"get-helpGet-ChildItem-online"
6.支持基本的数学运算和数组操作(加减乘除模),打开就能当计算器用
PSC:\Users\Haley>1+1 2 PSC:\Users\Haley>3*5 15 PSC:\Users\Haley>0xab 171 PSC:\Users\Haley>1kb 1024 PSC:\Users\Haley>1mb/1kb 1024
7.良好的脚本编程体验
powershell脚本的语法与高级编程语言非常相近,例如其分支语句if(...){}else{}、循环语句for(...){}与C语言别无二致,因而大大提高了编程体验。
8.拥有丰富的字符串操作对象和函数,全面支持正则表达式
字符串处理是shell脚本的主要任务,正则表达式的重要性也无需多说。
9.支持重定向,读写文件易如反掌
powershell原生支持将结果导出到html,csv,xml等文件,也可以通过重定向从文件中读取内容。
例如:
PSC:\Users\Haley>ls|Select-ObjectMode,Name|Export-Csv~/desktop/test.csv
这样就把当前目录下的所有文件名-读写权限保存到了一个csv文件中。
10.支持Debug
虽然这个功能很少用到,但支持debug是走向完备编程语言不可或缺的一项功能。