学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)
目录
一、powershell 执行外部命令
我们前面,学了用powershell进行简单的数学运算,powershell的管道,重定向等操作。
我们现在来看一下,利用powershell去执行一些外部的命令。
首先打开我们的cmd
命令 | 描述 |
netstat -ano | 查看一些端口的信息 |
命令 | 描述 |
ipconfig | 查看网络配置信息 |
命令 | 描述 |
route print | 打印路由信息 |
命令 | 描述 |
start notepad | 自定义文件路径(打开记事本) |
我们在powershell中执行上边的那些命令,也是可以正常执行的
但是从powershell的语法来讲,我们应该加上&"notepad"才是最为正确的写法
记事本(notepad.exe)放置在c盘下边的system32里边,并且这个目录在系统环境变量中。我们输入这个命令它就会去到这环境变量system32中做一个寻找,但是那些没有在系统环境变量中的命令,你想执行就得加上&"
命令 | 描述 |
$env:path | 打印系统变量 |
举个例子,wordpad,它不在系统环境变量中,我们直接执行是没办法直接打开的
那就可以使用&"C:\Program Files\WindowsNTAccessories\wordpad.exe"这样的命令格式,通过&操作符结合完整路径来准确执行该命令。它会打开一个写字板
二、powershell命令集
假如说我们想知道,powershell都有哪些命令所有的命令都有哪些,都有哪些大概的一个类型,它的命名方式上边,都有哪些特点,现在带大家简单认识一下
命令 | 描述 |
get-command | 获取所有的powershell的命令 |
我们拖到最上边,它有一个命令类型,和命令的名称 CommandType Name
powershell当中集合了很多的cmdlet 也就是内部命令。
我们可以发现,这些命令命名方式,都是动名词的方式去命名的。
所以说,是非常好理解的,对于英文比较好的同学来讲,是非常友好的。
我们知道powershell是非常强大的,并且兼容了cmd里边的命令,所以说,我们还可以直接在powershell中打开cmd,并且cmd里的所有命令正常情况下都是可以在,powershell当中使用的。
我们知道这个powershell的命名方式是动名词的一个方式,我们来查看这个帮助信息,看看如何查看的
命令 | 描述 |
get-help get-command | 查看名称语法别名 |
命令 | 描述 |
get-process | 获取进程信息 |
命令 | 描述 |
get-alias | 获取当前会话的别名 |
命令 | 描述 |
get-history | 获取命令的历史信息 |
命令 | 描述 |
get-date | 获取当前的时间 |
以上都是通过动名词组合的命令示例。
三、powershell别名的使用
上边讲了,get-command(获取所有的powershell的命令集)那么这些命令是否,有别名的存在
我们可以通过
命令 | 描述 |
get-help get-command | 查看它的别名 |
别名 gcm,我们运行gcm运行效果和get-command一致,别名和全称命令运行的效果是一致的。
所以往往这种别名更好记住,大家为了方便使用,完全不用去记忆这些全称的命令,去记忆这种简短的别名就可以很好的掌握powershel
有的别名,可能并不止一个,可能会出现有多个别名的情况。
命令 | 描述 |
get-childitem | 获取当前目录的信息 |
我们知道,ls,dir都可以达到同样的效果那么ls,dir 就是它的一个别名。
命令 | 描述 |
get-help get-childitem | 查看名称语法别名 |
那么我们怎么查询这个别名对应的一个cmdlet或者说全称命令呢
get-alias -name ls
get-alias -name dir
如何查找以特定字符开头或者结尾的这么一个命令呢。
get-alias | where {$_.definition.startswith("Remove")}
该代码通过在 Powershell 中先使用get-alias获取所有已定义的别名,再利用管道操作符将结果传递给where语句,以筛选出别名对应的实际命令定义是以“Remove”开头的相关别名信息
我们还可以做一些复杂的筛选,查找出所有的个别名信息。get-alias | group-object definition |Sort-Object -Descending count
Powershell 命令先通过get-alias获取当前会话中已定义的所有命令别名,再利用管道操作符将结果依次传递给group-object按别名对应的实际命令定义进行分组,然后传递给Sort-Object依据分组包含对象数量的多少以降序方式排序,最终展示出按要求处理后的结果。
四、powershell 自定义别名
除了上边说到的一些系统自带的别名,大家如果说实在记不住命令,你觉得系统自带的别名也很难记住,那就直接自定义别名,
set-alias -name pad -value notepad
set - alias:这是自定义别名的操作部分,用于创建一个新的别名。
-name pad:这里的pad是你想要设置的别名的名称。通过这个别名,你可以在命令行中更方便地调用其他命令。
-value notepad:notepad是别名pad所对应的实际命令。这意味着当你在命令行中输入pad时,系统会尝试执行notepad命令。在 Windows 环境下,notepad是打开记事本应用程序的命令。
然后我们直接运行pad
就可以正常执行,但是这个别名只是零时生效不是永久生效。
那么我们怎么删除别名呢,del alias:pad
别名导出,导入操作export-alias demo.ps1
dir
type demo.ps1
import-alias -Path demo.ps1 -Force
五、oscp学习培训
oscp是国际证书,到哪都认,对标红队中级,相比之下cisp含金量不高,它是国内证 OSCP的整个课程还是比较体系化的,涵盖了渗透测试中的大部分内容,内容包括:被动信息收集、主动信息收集、漏洞扫描、缓冲区溢出、Win32缓冲区溢出攻击、Linux缓冲区溢出漏洞、漏洞利用、文件传输、提权、客户端攻击、WEB应用攻击、密码攻击、端口重定向和隧道、Metasploit框架、免杀、渗透测试实战演练等。 在学校不能按部就班的学习,计算机专业往后都是靠技术吃饭,学校交的都是基础,需要自学才行 本人的团队,教学红队全栈和培训OSCP b站免费教红队全栈课程 泷羽Sec团队的泷老师,是一名资深高级红队队长,拥有OSEP,CISSP,OSCP等等含金量极高的证书。 欢迎大家一起来交流交流!
有想要了解的可以私信联系
标签:get,别名,命令,alias,Sec,泷羽,Powershell2,powershell,描述 From: https://blog.csdn.net/ciscoj/article/details/145084183