首页 > 开发 > PowerShell > 正文

你应该选择 Powershell 的10个理由(抛弃 cmd)

2020-05-30 20:21:31
字体:
来源:转载
供稿:网友

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,ModeName              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"            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表