PowerShell使用教程

  • 格式:pdf
  • 大小:961.65 KB
  • 文档页数:7

PowerShell使⽤教程

⼀、说明

1.1 背景说明

个⼈对PowerShell也不是很熟悉,开始的时候就突然看到开始菜单中多了个叫PowerShell的⽂件夹,后来⼀点就看到某个教程视频说PowerShell很厉害但也没怎么听,再后来就看到kali也有了⼀些PowerShell的脚本这才意识到PowerShell应该确实有独到之处⽽且正在逐渐受到认可,不过我使⽤PowerShell是不久前⽹上看到篇⽂章说PowerShell可以算数所以常当个计算器使⽤。直到昨天看了《WindowsPowerShell实战指南》才算有了⽐较完整的了解。

1.2 PowerShell是什么

很多⼈上来就什么基于.Net强⽆敌,⾸先作为⽤户我不关⼼你是什么技术,我⾸先想知道的是你提供的是什么东西、怎么⽤。PowerShell,从名字可以知道,他⾸先是⼀个shell,shell的意思就是和Linux的bash等⼀样、和原来的cmd⼀样就是在⾥边敲命令(可执⾏⽂件)使⽤;

⽽Power就意味他是⼀个功能强⼤的shell,从⾯向⽤户⽽⾔,个⼈觉得其功能强⼤体现在以下⼏⽅⾯:

(1) 微软态度。微软是真正的在推⾏PowerShell,包括Office等更多⾃家软件,底层都是调⽤PowerShell来实现。

(2) 兼容性cmd。PowerShell包含原先cmd的所有命令,原先命令使⽤形式不变,在是在其基础上添加命令。

(3) 对标Linux。PowerShell使⽤了Linux Shell的思想,也就是所有的系统操作、配置,都可以在shell中敲写命令实现。

(4) 统⼀的命令格式和⾃包含的⽂档。基于前3点我们即可以说PowerShell已可与Linux Bash等⼀较⾼下,如果再加上后发优势那就可以让⼈相信PowerShell可以成功。对于bash等shell你觉得最⼤的缺点是什么?从我⾓度⽽⾔我觉得是成本很⾼,最开始是我不知道⽤什么命令不太记得使⽤什么命令我需要百度⼀下,⼆是我经常忘记命令参数格式怎么写要在良莠不齐的⽹上百度半天(man⼿册?对不起我真的经常没看懂,我博客之前写了不少关于shell命令的⽂章就是备忘⽤,⽹上那么多关于shell命令的⽂章也说明不是因为我特别蠢)。⽽这就是PowerShell的两个优点:第⼀点是PowerShell所有命令使⽤统⼀的cmdlet命令格式(也就是“动词-名词”的格式,⽐如get-process)会使⼈很容易记住;第⼆点这⾥所谓⾃包含是指你要⼲⼀件事你可以逐步找到要做的事所需的所有命令,即便你记不得命令你也可以很容易找到,你找到命令看⽂档就很容易知道怎么使⽤。

当然powershell很好但也有着其劣势:

(1)Linux和Windows系统本⾝定位的差异。Linux的免费稳定使其牢牢占据了服务器领域,Linux Shell命令是没有很多统⼀格式的因此⼯程师们要费很⼤的劲去学习,⽽当Linux占据⼯程师的⼤部分精⼒并塑造完他们的习惯后,⼯程师们也许并没有那么多精神和动⼒去学powershell。

(2)来⾃Windows GUI的竞争。Windows上命令能⼲的事GUI也都能⼲也许效率慢⼀些但普通⽤户可不想去⿊漆漆的界⾯敲感觉不受控制的命令。Linux占据了服务器⼯程师的⽇常,⽽Windows⾃⾝强⼤的GUI对普通⽤户有天然的亲和⼒,所以powershell能期望的⽬标⽤户是谁呢,Windows服务器运维⼯程师好像没见过专门设有这职位。

⼆、PowerShell使⽤

下边我们将假设我们对powershell⼀⽆所知,通过杀除⼀个notepad进程的操作过程,来看⼀下什么叫powershell的“统⼀的命令格式和⾃包含的⽂档”。我这⾥并不介绍⼀堆命令----命令是介绍不过来的我这⾥是win7到了win10你会看到多出⼀倍不⽌的命令,以后还会更多----⽽是介绍powershell的使⽤思路,其他⼯作都可借助类似的思路来进⾏。

2.1 启动PowerShell

⽅法⼀: 直接在cmd中执⾏powershell,切换为powershell

⽅法⼆: 开始菜单中输⼊powershell启动powershell

⽅法三: 开始菜单----附件----powershell启动

带x86的是32位的,不带的是64位的;带ies的是简单的ide

2.2 使⽤powershell

powershell启动后界⾯如下

2.1.1 get-help查看帮助我们⼀⽆所知,所以我们输⼊help试⼀下,很好,powershell确实⽀持help

(不过我们前边说过powershell命令是cmdlet格式,help也使⽤cmdlet格式,help只是get-help的⼀个别名)

2.2.2 get-command查看有哪些命令

在确定powershell⽀持get-help之后,⾸先我们需要知道powershell⽀持哪些命令,在上图get-help中可以看到可以使⽤get-command查看powershell⽀持的命令

CommandType列,表⽰命令类型,Alias是别名、Cmdlet是powershell格式的命令、Function是函数

Name列,就是命令

Definition列,命令功能的简单描述

2.2.3 get-command缩⼩范围

上⾯的命令太多了,我们需要缩⼩范围以确定类似ps功能的命令在powershell中是什么(当然我们说过powershell兼容cmd所以可以直接⽤ps,但这不是我们这⾥想要的)

查看信息都是get-开头,所以我们猜测查看进程的命令也以get-开头,执⾏get-command get-*试⼀下

结果如下图所⽰,列出了所有get开头的命令,其中我们看到有⼀个叫get-process的命令,⼀看就是获取进程信息的

或者我们直接尝试获取进程(process)相关的命令:get-command "*process*"

2.2.4 get-process查找进程

我们将命令锁定在了get-process但是我们不知道这个命令怎么⽤,2.2.1中说可以通过get-help command的形式查看帮助,我们也试⼀下

可以看到所有选项都是带中括号的,所以直接执⾏get-process就可以了

但是可以猜测,没有任何过滤条件返回的肯定是所有进程列表这需要过滤,可以看到-name参数可以过滤进程名,为保险起见我们还加上*号通配符

整个要执⾏的命令就是:get-process -name *notepad*

2.2.5 stop-process杀除进程

第⼀个思路是:在get-help get-process中已看到相关链接中有stop-process,这⼤概率是杀除进程的命令

第⼆个思路是:获取进程是get-process,那么杀除进程也⼤概率是xxx-process

执⾏:get-command *process

可以看到就5个命令,⽽其中只有stop-process⽐较像,⼀样使⽤get-help来查看帮助顺便确认是不是

显⽽易见确实是,⽽且杀除命令就是:stop-process -id pid