你应该选择 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 之上。
例如:
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 是走向完备编程语言不可或缺的一项功能。
相关文章
- 本文为那些对学习 Windows PowerShell 命令行和脚本编写环境感兴趣的系统管理员提供了资源。也请告诉我们本网站如何才能对您更有用处。...2020-06-30
- 这篇文章主要介绍了自动设置安卓手机wifi代理的PowerShell脚本,帮助大家进行抓包测试,感兴趣的朋友可以了解下...2020-10-17
PowerShell中使用Get-Date获取日期时间并格式化输出的例子
这篇文章主要介绍了PowerShell中使用Get-Date获取日期时间并格式化输出的例子,本文讲解了直接调用Get-Date、在Write-Host中使用Get-Date、格式化输出的方法,需要的朋友可以参考下...2020-06-30PowerShell读取文件内容、替换文件内容、读取限定行的例子
这篇文章主要介绍了PowerShell读取文件内容、替换文件内容、读取限定行的例子,本文使用3个例子来说明实现这3个需求的操作技巧,需要的朋友可以参考下...2020-06-30- 下面小编就为大家带来一篇详谈Ubuntu PowerShell(小白入门必看教程)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-30
powershell解决win10开始菜单和通知中心无法打开
这篇文章主要介绍了powershell解决win10开始菜单和通知中心无法打开的相关资料,需要的朋友可以参考下...2020-06-30原创powershell脚本小工具ctracert.ps1跟踪路由(win8以上系统)
这篇文章主要介绍了原创powershell脚本小工具ctracert.ps1跟踪路由(win8以上系统),需要的朋友可以参考下...2020-06-30- 本文介绍PowerShell中使用match操作符,配合正则表达式从数组中筛选出想要的内容,需要的朋友可以参考下...2020-06-30
Windows PowerShell是啥?看完本文你就懂它了
这篇文章主要介绍了Windows PowerShell是啥?Windows PowerShell是什么?Windows PowerShell有哪些特性?Windows PowerShell有什么用?看完本文你就懂它了,需要的朋友可以参考下...2020-06-30- 这篇文章主要介绍了PowerShell 远程执行任务的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-30
添加powershell脚本来解决nuget打包文件丢失问题
这里给大家分享的是作者在使用nuget打包的过程中遇到丢失文件的问题的时候使用powershell脚本实现的解决办法,非常的巧妙,这里推荐给大家...2020-06-30- 这篇文章主要介绍了Powershell 脚本数字签名实现方法,需要的朋友可以参考下...2020-06-30
- 这篇文章主要介绍了Powershell 获取特定的网页信息的代码,需要的朋友可以参考下...2020-06-30
- 这篇文章主要给大家介绍了关于PowerShell中Job相关命令及并行执行任务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。...2020-06-30
- 下面小编就为大家带来一篇PowerShell管道入门必看篇(管道例子大全)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-30
- win10已经正式发售了很多天了,那么他其中搭配的PowerShell 5.0又有什么新的变化呢,今天我们就来探询一下。...2020-06-30
PowerShell 读取性能计数器二进制文件(.blg)记录并汇总计算
由于监控及报告需要,要统计性能计数器每天数值情况,确认数据库服务器的运行状况。若打开计数器填写,比较麻烦,现在统计用 powershell 来读取计数器的值...2020-06-30用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件
这篇文章主要介绍了用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件,需要的朋友可以参考下...2020-06-30- 下面小编就为大家分享一篇基于PowerShell在Ubuntu系统的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-30
- 这篇文章主要介绍了Powershell错误处理之what-if的相关资料,需要的朋友可以参考下...2020-06-30