一文带你了解powershell
前言:powershell在后渗透阶段是一个渗透利器,使用它会提高我们的渗透速度。
一、初始powershell
windows powershell是一种命令行外壳程序和脚本环境,它内置在每个受支持的windows版本中(windows7,win 2008R2以及更高版本),为windows命令行使用者和脚本编写者利用.NET Framework的强大功能提供了便利。只要可以在一台计算机上运行代码,就可以将powershell脚本文件(.ps1)下载到磁盘中执行(甚至无须将脚本文件写到磁盘中)。也可以把powershell看做命令提示符cmd.exe的拓展 Powershell需要.NET环境的支持,同时支持.NET对象,其可读性,易用性局所有Shell之首。powershell这些特点,使它逐渐成为一个非常流行得力的安全测试工具。
POWERSHELL具有:
- 在WIN7版本上的操作系统是默认安装的
- 脚本可以在内存中允许,不需要写入磁盘
- 几乎不会触发杀毒软件
- 可以远程执行
- 目前很多工具都是基于powershell开发的
- 使windows的脚本的执行变得更加容易
- cmd.exe的运行通常会被阻止,但是powersehll的运行通常不会被阻止
- 可用于管理活动目录
1.查看版本”Get-Host”或者$psversiontable
2.计算1gb,数学运算
3.Get-Serivce获取服务
二、 powershell的快捷键
ALT+F7 清除命令的历史记录
PgUp PgDn 翻页的效果
Esc 清除当前命令行
管道的作用是将一个命令的输出作为另一个命令的输入,两个命令之间用“|”连接
Tab 自动补齐命令或者文件名
1.powershell管道和重定向
重定向>,如果存在文件会覆盖,>>才是追加 将列出的信息重定向到文件
type是显示文件内容
2.powershell执行外部命令
查看系统变量
$env:path
3.powershell命令集合
Get-comannd获取所有命令
get-help xxx命令
还可以看到别名gcm
get-process获取进程信息
get-alias 获取当前会话的别名
get-history 获取历史命令
4.powershell别名使用
get-alias -name 别名
查找Remove开头的所有别名
get-alias | where {$_.definition.startswith(“Remove”)}
查找所有的别名
get-alias | group-object definition | sort -descending Count
5.powershell变量基础
PS D:> $name=”x”
PS D:> $name
6 Powershell变量操作
可以像python一样交换变量
ls variable:
查看变量
三、进阶用法
1.powershell自动化变量
就是powershell打开后自动加载的变量
powershell环境变量
ls env:
一定要有:
打印某个环境变量的值
创建环境变量
$env:name=”x”
删除环境变量:
del env:name
2.Powershell脚本执行策略
为了阻止使用者运行恶意脚本,powershell提供了一个执行策略。在默认情况下,这个执行策略设置为“不能运行” 如果powershell脚本无法执行,可以使用Get-ExecutionPolicy查看当前的执行策略
Restricted:脚本不能运行(默认设置) RemoteSigned:在本地创建的脚本可以运行,但从网上下载的脚本不能运行(拥有数字证书的签名除外) AllSigned:仅当脚本由受信任的发布者签名时才能运行 Unrestricted:允许所有脚本运行 可以使用下面的命令设置powershell的执行策略 Set-ExecutionPolicy 运行脚本:
3.powershell与其他脚本程序的互相调用
4.powershell实现用户交互
$input=read-host “请输入您的姓名”
5.powershell格式化字符串
Powershell条件操作符
- nq 不等于
- -gt 大于
- -lt 小于
- -contains包括 (1,2,3) contains 1
-not 取反
- -eq 等于
6.powershell操作注册表
Powershell可以使用文件操作API来操作注册表,注册表项就类似于Windows的文件夹。
上述例子就演示了利用cd指令(Set-Location)设置当前的注册表路径, 然后通过dir指令(Get-ChildItem)获取所有的子项。
注册表项API
在Powershell中,注册表项基本上和文件夹是对等的,可以使用文件夹操作相关API来操作注册表项。通常的操作有:
新建项: New-Item (mkdir、ni)
重命名项:Rename-Item (ren、rni)
删除项: Remove-Item (rm)
获取子项:Get-ChildItem (dir)
- 点赞
- 收藏
- 关注作者
评论(0)