主题 : 强大到没朋友,Win10 PowerShell简介(1)
千山同一月 万户尽皆春 千江有水千江月 万里无云万里天
级别: 总版主

UID: 998
精华: 0
发帖: 605029
威望: 529103 点
无痕币: 27 WHB
贡献值: 0 点
在线时间: 62187(时)
注册时间: 2008-12-25
最后登录: 2024-04-27

0 强大到没朋友,Win10 PowerShell简介(1)

Windows10创意者更新开始,PowerShell正式上位替换了命令提示符CMD。不论是Windows+X右键超级菜单,还是Shift+文件夹空白处右键,又或在文件资源管理器文件菜单中,都没有命令提示符CMD的身影了,全部都由PowerShell取而代之了。长期使用CMD的Windows系统管理员或Windows命令行极客恐怕一时不能适应,使用CMD都只能去开始菜单-所有应用-Windows系统-命令提示符打开使用,藏得这么深,显然是不想让人用了啊。

图1:PowerShell打开方式
问题来了,PowerShell这货凭什么力压CMD,强行上位?如果你之前试用过PowerShell,相信它一定没有给你什么好印象。打开慢!反应慢!命令还陌生!还动不动就弹一大堆谁都看不懂错误,PowerShell究竟凭什么在Windows10创意者更新中替代命令提示符CMD呢?微软脑抽了?
微软没有脑抽,PowerShell是凭借其强大的功能替换CMD的。这里要先说明以下PowerShell究竟是什么东西,或者它究竟是不是东西?
Windows PowerShell不是东西,它是专为系统管理员设计的新Windows命令行shell,它包括交互式提示和脚本环境。PowerShell定义很多命令与操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序;PowerShell允许将几个命令组合起来放到文件里执行,实现文件级的重用,也就是说有脚本的性质;PowerShell能够充分利用.Net类型和COM对象,来简单地与各种系统交互,完成各种复杂的、自动化的操作。
用人话说就是CMD能做的PowerShell都能做,CMD不能做的Powershell也能做。就是这么自信!不信?赶紧打开PowerShell把下面的命令复制进去,看看它干了什么事,然后你用CMD做出来吧!
# create new excel instance
$objExcel = New-Object -comobject Excel.Application
$objExcel.Visible = $True
$objWorkbook = $objExcel.Workbooks.Add()
$objWorksheet = $objWorkbook.Worksheets.Item(1)
# write information to the excel file
$i = 0
$first10 = (ps | sort ws -Descending | select -first 10)
$first10 | foreach -Process {$i++; $objWorksheet.Cells.Item($i,1) = $_.name; $objWorksheet.Cells.Item($i,2) = $_.ws}
$otherMem = (ps | measure ws -s).Sum - ($first10 | measure ws -s).Sum
$objWorksheet.Cells.Item(11,1) = "Others"; $objWorksheet.Cells.Item(11,2) = $otherMem
# draw the pie chart
$objCharts = $objWorksheet.ChartObjects()
$objChart = $objCharts.Add(0, 0, 500, 300)
$objChart.Chart.SetSourceData($objWorksheet.range("A1:B11"), 2)
$objChart.Chart.ChartType = 70
$objChart.Chart.ApplyDataLabels(5)

图2:使用PowerShell生成Excel图表
上面一段代码是PowerShell界常见的一段神代码,很多初学者被其带入了PowerShell的大门。有效代码不过20来行,作用是把当前系统中最占内存的10个进程的数据发送到Excel中,并绘制成三维饼图。CMD是很难做到了,被替代也理所应当了。
PowerShell的定位是操作系统和应用程序的管理工具,从这个角度看,它是CMD的升级版,并非简单的对CMD进行扩展,事实上微软也不打算扩展和升级CMD了,以后PowerShell将全方位的替代CMD,目前CMD和PowerShell还是并存状态。
下面正式介绍PowerShell。
一、简单的命令
在CMD中,命令是从非常简单(如attrib.exe)到非常复杂(如netsh.exe)的可执行程序,新入门用户一旦遇到复杂命令,只能束手无策,只能求助搜索引擎,解决当前需求之后,就把命令的用法抛诸脑后,下次使用又要重新学习,极其不便。

图3:复杂的netsh命令
PowerShell命令设计非常规范,它的命令由“动词”和“名词”两部分组成,比如“get”表示检索数据,“process”表示系统进程,把“get”和“process”组合起来的PowerShell命令就是“get-process”,意思是获取系统进程列表,这种命令在PowerShell中称为“cmdlet(读作“command-let”)”。

图4:使用get-process命令获取系统进程
像“get-process”这样“动词-名词”结构有个好处,具有相同“名词”的命令通常是一类命令,比如都拥有“process”的命令有:

图5:拥有“process”的命令
使用“动词-名词”结构还有一个好处,就是不同的“动词”和“名词”可以自由组合,很少的几个“动词”和“名词”就可以组合出大量的可用命令,使命令记忆量大为降低,只需记住简单的几个词语,就可以使用大量的命令,这是包括命令提示符CMD在内的Shell不具备的,并且不会产生歧义,对新用户非常友好。
级别: 七朵秋菊
UID: 80465
精华: 0
发帖: 3952
威望: 54529 点
无痕币: 77215 WHB
贡献值: 0 点
在线时间: 313(时)
注册时间: 2009-03-22
最后登录: 2024-04-26

学习学习,谢谢分享。
Total 0.116921(s) query 5, Time now is:04-27 22:37, Gzip enabled 粤ICP备07514325号-1
Powered by PHPWind v7.3.2 Certificate Code © 2003-13 秋无痕论坛