声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
免责声明:本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害,包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等,不承担任何责任。所有使用本教程内容的个人或组织应自行承担全部风险。
1.认识和启动powershell
启动powershell
$psversiontable命令可以显示powershell的版本信息
2.powershell为什么强大
2.1powershell可以进行一些简单的运算
比如计算1gb的大小(单位是字节)
数学运算十分方便
2.2使用动词+名词进行命名
例如:get-service
同样的命令在cmd中是执行不了的
如果想看服务的相关信息需要win+r,输入services.msc进行查看
2.3powershell是面向对象的
编程语言分为两种,一种是面向过程,一种是面向对象。
二者的区别是:
面向过程编程以过程为中心,将任务分解为步骤按顺序执行
面向对象编程以对象为中心,对象包含数据和操作数据的方法。
像c++ java 都是支持面向对象,一般的脚本语言是不支持面向对象编程的。
C 语言
C 语言是一种典型的面向过程的编程语言,它本身不直接支持面向对象编程的概念。在 C 语言中没有类(class)和对象(object)的语法结构。不过,可以通过一些编程技巧来模拟面向对象的特性。
例如,通过结构体(struct)来封装数据,并且使用函数指针来模拟方法。但是这种模拟方式相对比较复杂,而且没有像真正面向对象语言那样直接的继承、多态等特性。
汇编语言
汇编语言是一种低级编程语言,它主要是面向机器的,和硬件的关联非常紧密。汇编语言不支持面向对象编程。它是通过操作寄存器、内存地址等来完成任务的,没有类、对象这些高级的抽象概念。它更关注的是指令的执行顺序和数据在内存中的存储和操作方式,例如,在 x86 汇编语言中,程序员需要编写如MOV(数据传送指令)、ADD(加法指令)等指令来操作数据,而不是通过对象的方式。
再者就是,powershell 绑定了.net微软平台,我们知道可以借助 .net这么一个强大的库可以去做很多的一个操作,实现很多的一个不同的一个功能,实现出来的效果,也会非常强大。.net的库也可以任意调用,兼容性非常高,可与很多的类似于,cmd vbs 可执行文件等等,一系列的结合起来进行综合调用,可拓展性能也非常好。
然后它和 vbs cmd 之间都可以互相调用,它的兼容性是非常好的,再说说拓展性,powershell可以管理一个活动目录,虚拟机的一个虚拟化的产品,比如虚拟化平台office 365都可以借助powershell,来管理我们的一些服务,一些产品,一些虚拟化的产品,一些活动目录,都可以借助powershell,来实现一些操作来管理,它的基于平台的可拓展性,也是很好的。
3.powershell控制台
在此界面使用ctrl+shift+enter进入管理员模式启动powershell
我们再来看看,如何去自定义我们powershell的这个控制台的一些属性,比如说字体大小,字体颜色,以及其他的一些情况,我们来看看如何自定义cmd的一个控制台。
我们可以在此处右键,然后属性看看,光标大小,以及其他的一些字体,这些都可以在属性里面去调整,颜色,窗口大小等等,这样根据自己的喜好去定义,这些个参数,还有透明度,等等的一些。
4.powershell快捷键
其实在powershell中快捷键的一些使用,和Linux中的快捷键的使用,是很相似的。
ALT+F7
清除命令的历史记录
PgUp PgDn
翻页的效果
Enter
执行当前命令
End
将光标移至当前命令的末尾
Del
从右开始删除输入的命令字符
Esc
清空当前命令行
F2
自动补充历史命令至指定字符
F4
删除命令行至光标右边指定字符处
F7
对话框显示命令行历史记录
F8
检索包含指定字符的命令行历史记录
F9
根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看
左/右
左右移动光标
上/下
切换命令行的历史记录
Home
光标移至命令行最左端
Backspace
从右删除命令行字符|
CtrL+C
取消正在执行的命令.,
Tab
自动补齐命令或者文件名
5.powershell 管道和重定向
再看看powershell的管道和重定向操作,什么是管道和重定向,管道就是一句话概括,上一条命令的输出作为下一条命令的输入。
这么来说可能不是很好理解,我们举个简单的例子,我们对这个文本去进行一个处理,我们powershell是基于对象的,这个还是要和传统cmd的区别区分开来,我们可以在cmd当中输入powershell,进入到这么一个界面当中。
我们知道,在Windows命令中,ls 这种linux命令是没法使用的,但是在powershell里面是可以的,因为它是跨平台的。
也就是linux命令在powershell中都可以使用
windows命令,dir ipconfig 这些自然是也可以使用的,所以说在powershell中,可以对这个linux,windows命令结合起来使用。
ls | format-table name
在ls当中做出了一个简单的处理,相当于管道符就是把第一条命令的内容做一个处理,筛选只输出name这一列
重定向
ls | format-table Mode,name > a.txt
把输出结果重定向到,a.txt 然后刚刚输出的内容就重定向导入到了a.txt 中去了
比如我们切换到d盘 d:
ls | format-table Mode,name > a.txt
type a.txt (用cat也行)
>是覆盖原有内容,>>就是在原有内容后面追加。
总结一下,powershell 管道符是基于对象的,兼容linux,以及windows多平台的命令,管道符就是上一条命令的输出作为下一条命令的输入。
6.powershell 数学运算
它可以代替计算器去做一些,运算,加减乘除,取余,复杂综合运算等等。
1+6
1*5+8
1*6+6/3
1*6+6/4
(1+7*5)/2
powershell,还可以换算一些计算单位,容量等等,
1gb/1mb
1gb/1mb*18kb
1024*18*1024
或者进行一些逻辑运算
1gb -gt 1mb
(1gb肯定比1mb大正确就会返回true)
进制转换
比如说 0x7e这种
PS D:\> 0x7e
126
PS D:\> 0xabc
2748
它可以把16进制转换成一个10进制这种
有想报考oscp的读者可以咨询作者,我们泷羽sec目前正在做oscp培训,泷老师带着打100+台靶机,同时还有直播讲解知识点