导语:随着我们本系列文章的逐步深入,我们便会更加明白powershell的强大之处,本文我们就来讲解一些powershell的函数和脚本。
介绍
随着我们本系列文章的逐步深入,我们便会更加明白powershell的强大之处,本文我们就来讲解一些powershell的函数和脚本。
Powershell函数
基于前两篇文章的介绍,相信大家对powershell有了基本的了解,函数的用法其实也非常简单,只要使用下面的语法即可:
function [<scope:>]<name> [([type]$parameter1[,[type]$parameter2])] { param([type]$parameter1 [,[type]$parameter2]) dynamicparam {<statement list>} begin {<statement list>} process {<statement list>} end {<statement list>} }
不过根据上下文环境不同,函数的使用可能很简单,但也可能很复杂。
现在我们来看看如何使用powershell函数,先从一个简单的函数开始:multiplying 4 by 3.
这个函数就是一个乘法运算,如图:
我们也可以使用变量$args作为数组来表示参数,然后按照位置顺序从用户的输入中取值,如图所示:
我们还可以使用命名参数,如图:
关于参数还有一个功能是,我们可以指定参数被解析的类型。
在下面这个例子中,我们只允许int型参数才能被解析,其他任何类型都会引发一个异常,如图:
当然,这里我只是向大家介绍的最基础的知识,关于函数还有很多用法需要你自己探索,特别是在使用参数和属性等高级功能或使用参数验证时。我们稍后会讨论一些例子。
使用Powershell编写脚本
现在我们来讲解一下使用powershell编写脚本。
不过,在我们直接开始编写脚本之前,先来了解下Microsoft是如何保护我们的系统免受恶意脚本攻击的。
我们可以发现在脚本执行安全策略(微软称之为执行策略)中,有一条很有意思,那就是“执行策略是Windows powershell安全策略的一部分”。
它决定你是否运行脚本,如果运行脚本的话,它还决定哪些脚本在运行之前必须进行数字签名。
你可以使用‘Get-ExecutionPolicy’命令来获取当前的执行策略,如图:
根据微软官方文档,执行策略有如下几种:
· Restricted:Powershell不会执行任何脚本,这是powershell默认的执行策略。
· Allsigned:Powershell只会执行具有数字签名的脚本。如果你执行的脚本是由Powershell无法识别的Publisher进行签名的,powershell会询问你是否信任这个脚本的Publisher.
· RemoteSigned:powershell不会执行从互联网上下载的脚本,除非他们有签名,但是powershell可以执行非互联网下载脚本,而不会弹窗提醒.如果下载脚本有签名,但是powershell无法识别,那么在执行脚本之前,powershell还是会弹框提示.
· Unrestricted:powershell忽视数字签名,但是执行从互联网上下载的脚本时会弹窗提示.
当然,你也可以修改默认策略,命令是Set-ExecutionPolicy <policy>,如图:
现在我们已经修改了执行策略为“unrestricted”,这个策略允许我们执行脚本,我们来尝试进行攻击。(我非常激动来完成这一部分来攻击渗透中的实例)。
你可以在notepad中编写脚本,也可以使用powershell的脚本编写交互界面,这是powershell默认就自带的集成脚本环境(ISE),也是非常好用的,界面如图:
如图可以看到ISE有三个区域:
1.脚本编写区
2.Powershell解释器
3.现有命令(可以搜索和过滤)
现在终于可以开始编写脚本了,我们先写一个非常简单的hello world脚本并执行,如图:
或者保存脚本,然后使用命令行执行,如图:
现在你就可以自由发挥了,发现什么功能都可以尝试去做。不过,放心,我们会在后续的文章中讲解一些非常不错的用例和场景。
脚本和函数用例
下面这个简单的脚本可以让我们杀掉指定进程,需要指定的参数就是我们想要杀掉的进程的PID,脚本如下:
执行脚本,如图:
总结
当然,这仅仅只是一个简单的开始,不要小瞧这些简单的基础知识,一定要牢牢把握,不然后期很难进阶。在接下来的文章中,我们就要开始讲高级用法和实际用例,敬请期待。