我的对PowerShell也不是很熟悉,开始的时候就忽然看到开始菜单中多了个叫PowerShell的文件夹,后来一点就看到某个教程视频说PowerShell很厉害但也没怎么听,再后来就看到kali也有了一些PowerShell的脚本,这才意识到PowerShell应该确实有独到之处并且正在逐渐受到承认,不过我使用PowerShell是不久前网上看到篇文章说PowerShell能够算数因此常当个计算器使用。直到昨天看了《Windows PowerShell实战指南》才算有了比较完整的了解。shell
不少人上来就什么基于.Net强无敌,首先做为用户我不关心你是什么技术,我首先想知道的是你提供的是什么东西、怎么用。bash
PowerShell,从名字能够知道,他首先是一个shell,shell的意思就是和Linux的bash等同样、和原来的cmd同样就是在里边敲命令(可执行文件)使用;服务器
而Power就意味他是一个功能强大的shell,从面向用户而言,我的以为其功能强大致如今如下几方面:运维
(1) 微软态度。微软是真正的在推行PowerShell,包括Office等更多自家软件,底层都是调用PowerShell来实现。ide
(2) 兼容性cmd。PowerShell包含原先cmd的全部命令,原先命令使用形式不变,在是在其基础上添加命令。函数
(3) 对标Linux。PowerShell使用了Linux Shell的思想,也就是全部的系统操做、配置,均可以在shell中敲写命令实现。学习
(4) 统一的命令格式和自包含的文档。3d
基于前3点咱们便可以说PowerShell已可与Linux Bash等一较高下,若是再加上后发优点那就可让人相信PowerShell能够成功。对于bash等shell你以为最大的缺点是什么?从我角度而言我以为是成本很高,最开始是我不知道用什么命令不太记得使用什么命令我须要百度一下,二是我常常忘记命令参数格式怎么写要在参差不齐的网上百度半天(man手册?对不起我真的常常没看懂,我博客以前写了很多关于shell命令的文章就是备忘用,网上那么多关于shell命令的文章也说明不是由于我特别蠢)。而这就是PowerShell的两个优势:第一点是PowerShell全部命令使用统一的cmdlet命令格式(也就是“动词-名词”的格式,好比get-process)会令人很容易记住;第二点这里所谓自包含是指你要干一件事你能够逐步找到要作的事所需的全部命令,即使你记不得命令你也能够很容易找到,你找到命令看文档就很容易知道怎么使用。视频
固然powershell很好但也有着其劣势:blog
(1)Linux和Windows系统自己定位的差别。Linux的免费稳定使其紧紧占据了服务器领域,Linux Shell命令是没有不少统一格式的,所以工程师们要费很大的劲去学习,而当Linux占据工程师的大部分精力并塑造完他们的习惯后,工程师们也许并无那么多精神和动力去学powershell。
(2)来自Windows GUI的竞争。Windows上命令能干的事,GUI也都能干也许效率慢一些但普通用户可不想去黑漆漆的界面敲感受不受控制的命令。Linux占据了服务器工程师的平常,而Windows自身强大的GUI对普通用户有自然的亲和力,因此powershell能指望的目标用户是谁呢,Windows服务器运维工程师好像没见过专门设有这职位。
下边咱们将假设咱们对powershell一无所知,经过杀掉一个notepad进程的操做过程,来看一下什么叫powershell的“统一的命令格式和自包含的文档”。
我这里并不介绍一堆命令----命令是介绍不过来的。我这里是win7到了win10你会看到多出一倍不止的命令,之后还会更多----而是介绍powershell的使用思路,其余工做均可借助相似的思路来进行。
方法一:直接在cmd中执行powershell,切换为powershell
方法二:开始菜单中输入powershell启动powershell
方法三: 开始菜单----附件----powershell启动
带x86的是32位的,不带的是64位的;带ies的是简单的ide
powershell启动后界面以下
咱们一无所知,因此咱们输入help试一下,很好,powershell确实支持help
(不过咱们前边说过powershell命令是cmdlet格式,help也使用cmdlet格式,help只是get-help的一个别名)
在肯定powershell支持get-help以后,首先咱们须要知道powershell支持哪些命令,在上图get-help中能够看到可使用get-command查看powershell支持的命令
CommandType列,表示命令类型,Alias是别名、Cmdlet是powershell格式的命令、Function是函数
Name列,就是命令
Definition列,命令功能的简单描述
上面的命令太多了,咱们须要缩小范围以肯定相似ps功能的命令在powershell中是什么(固然咱们说过powershell兼容cmd因此能够直接用ps,但这不是咱们这里想要的)
查看信息都是get-开头,因此咱们猜想查看进程的命令也以get-开头,执行get-command get-*试一下
结果以下图所示,列出了全部get开头的命令,其中咱们看到有一个叫get-process的命令,一看就是获取进程信息的
或者咱们直接尝试获取进程(process)相关的命令:get-command "process"
咱们将命令锁定在了get-process可是咱们不知道这个命令怎么用,2.2.1中说能够经过get-help command的形式查看帮助,咱们也试一下
能够看到全部选项都是带中括号的,因此直接执行get-process就能够了
可是能够猜想,没有任何过滤条件返回的确定是全部进程列表这须要过滤,能够看到-name参数能够过滤进程名,为保险起见咱们还加上*号通配符
整个要执行的命令就是:get-process -name notepad
第一个思路是:在get-help get-process中已看到相关连接中有stop-process,这大几率是杀除进程的命令
第二个思路是:获取进程是get-process,那么杀掉进程也大几率是xxx-process
执行:get-command *process
能够看到就5个命令,而其中只有stop-process比较像,同样使用get-help来查看帮助顺便确认是否是
显而易见确实是,并且杀除命令就是:stop-process -id pid