网络安全自学篇(十九)| Powershell基础入门及常见用法(一)

2020-04-10 13:30:46 浏览数 (1)

一.Powershell初识

1.基础概念

Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。

传统的CMD支持脚本编写,但扩展性不好,而Powershell类似于Linux shell,具有更好的远程处理、工作流、可更新的帮助、预定任务(Scheduled Job)、CIM等优点。

那么,如何进入Powershell呢?

一种方法是在运行中直接输入Powershell打开,另一种方法是CMD中输入Powershell打开。

不同操作系统内置的Powershell是不一样的,比如win7或win2008,如何查看版本呢?

输出结果如下图所示:

2.为什么强大?

首先,它可以进行计算任务,包括计算1gb大小(以字节为单位),还有基本的运算。

其次,Powershell可以获取计算机的服务详细信息、状态等。

其显示结果如下图所示,采用动词 名词方式命名,比较清楚。

而CMD中无法获取services的(输入services.msc),它是以图形化方式显示出来的。

最后,由于Powershell具有以下特点,它被广泛应用于安全领域,甚至成为每一位Web安全必须掌握的技术。

方便

支持面向对象

支持和.net平台交互

强大的兼容性,和cmd、vbs相互调用

可扩展性好,它可以用来管理活动目录、虚拟机产品等平台

3.控制台和快捷键

鼠标右键属性,可以对Powershell控制台进行编辑,并且它支持两种编辑模式,快速编辑模式默认钩上的。

Powershell快捷键包括:

例如,使用快捷键Ctrl C打断了正在运行的ping指令;使用tab快捷键补齐了service.msc命令。

4.数学运算

Powershell支持数学运算,比如:

显示结果如下图所示:

二.Powershell管道和重定向

1.管道

Powershell管道旨在将上一条命令的输出作为下一条命令的输出。

管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir | More可以将结果分屏显示。传统的Cmd管道是基于文本的,但是Powershell管道是基于对象。例如:

如果只获取其中的name、mode值,则使用如下指令。

2.重定向

重定向旨在把命令的输出保存到文件中,‘>’为覆盖,’>>’追加。

上面代码是将ls显示文件内容的name和mode信息存储至本地demo.txt文件夹中,再调用“type demo.txt”打印文件内容。如果两个 >> 它会在原来的基础上,再进行补充(类似 a ),而单个大于号是删除原来的写入(类似 w)。

输出结果如下图所示。

三.Powershell执行外部命令及命令集

1.外部命令

Powershell是CMD的一个扩展,仍然能够让CMD中的命令在Powershell中使用,Powershell初始化时会加载CMD应用程序,所以CMD命令正常情况下在Powershell中都能使用,例如ipconfig。

查看端口信息

包括协议、本地地址、外部地址、状态、PID(进程号)。

查看网络配置信息

打印路由信息

自定义文件路径,打开应用程序

notepad放在C盘下面的WindowsSystem32文件中,能够直接打开。

系统变量

Python可以直接打开,Wordpad不能打开,需要添加环境变量中。

2.命令集

通过get-command获取所有命令,通常是动名词的方式。

获取其用法的命令如下,简称gcm。

获取进程信息

获取当前会话的别名

获取输入的历史命令信息

获取当前时间

.Powershell别名使用

1.别名基本用法

获取所有命令get-command可以用别名gcm替代。

获取当前目录的所有文件信息get-childitem,可以用ls、dir两个命令达到同样的效果。

获取相关的帮助信息,其命令如下:

获取别名所对应真实的命令

查找所有以Remove开头的别名

其中,where来做一个管道的筛选,$_表示当前的元素,definition 定义一个字符串数组类型。Powershell支持.net强大的类库,里面的definition包括字符串startswith操作,获取字符串开头函数。

查找所有别名,并调用sort降序排序及计算排列。

注意:自定义别名是临时生效的,当关闭Powershell时就会失效。

2.自定义别名

设置别名,将notepad设置为新的别名pad。pad打开notepad,表明我们的别名创建成功。

别名是临时生成的,关掉Powershell即可失效,也可以撰写命令删除。

保存别名

导入别名命令如下,其中-force表示强制导入。

五.Powershell变量基础

五.Powershell变量基础

1.基础用法

Powershell变量跟PHP很类似,如下所示。

Powershell对大小写不敏感,a 和 A 一样。复杂变量用大括号引起来,但不建议同学们这里定义。

变量也可以设置等于命令。

变量多个同时赋值,但不建议这么写。

2.变量操作

变量的基本运算操作

传统变量交换方法

现在变量交换的写法

查看当前的变量

查找特定的变量值,星号表示代替所有的值(num开头)。

查找变量是否存在

删除变量

专用变量管理的命令

3.自动化变量

powershell打开会自动加载变量,例如:窗口打开它会自动加载大小,再比如程序的配置信息自动加载。

根目录信息

当前进程的标志符,该自动化内置变量只能读取,不能写入。

4.环境变量

查看当前环境变量

打印某个环境变量的值

创建新的环境变量

删除环境变量

更新环境变量,注意它只是临时生效,并不会记录到我们的系统中。

永久生效如何实现呢?增加路径至环境变量PATH中,只对User用户生效。

系统变量对所有用户都生效,用户变量只对当前用户生效。

生效之后如下图所示,用户变量增加了相关值。

六.Powershell调用脚本程序

1.脚本文件执行策略

首先,发现我们的脚本文件是禁止执行的。

接着,我们尝试获取策略帮助信息。

最后修改权限,让其能运行Powershell脚本文件。

它会提示你需要启动管理员身份运行。

通过管理员身份打开CMD,再设置其权限即可,设置完成之后可以调用相关的脚本程序。

2.调用脚本程序

(1) 定义一个demo.bat文件,其内容如下,关闭回写,打印hello world。

运行命令打开:

(2) 定义一个demo.vbs文件,内容如下:

运行命令打开:

(3) 运行Powershell脚本文件也类似。

运行结果如下图所示:

那么,如何在CMD中运行Powershell文件呢? 我们将demo.bat修改为如下内容,其中&表示运行。

运行命令:

下面方法也可以直接运行

七.总结

“没有网络安全就没有国家安全,没有信息化就没有现代化”,这是我第三次听院士授课。每次的感受都很震撼,他们是这个国家的脊梁,总能站在国家和民族的角度去思考问题、解决问题,用通俗易懂的图表去诠释知识,去构建祖国的重大工程和梦想,致敬。侠之为大,为国为民。补充一句,沈院士很早就到了会场修改PPT,特别增加了区块链的知识。

0 人点赞